注册 登录
编程论坛 汇编论坛

刚学汇编……请教~

songsfly 发布于 2009-11-25 12:45, 1372 次点击
程序代码:

   DATA  SEGMENT
     ASTRING  DB        0AH,0DH,'hello$'
          BE  DB        0FFH
        DATA  ENDS
        CODE  SEGMENT
              ASSUME    DS:DATA,CS:CODE
       MAIN:
              MOV       CX,DATA
              MOV       DS ,CX


              MOV       DX, 0003H
              MOV       AH,09H
              INT       21H
              MOV       AH,4CH
              INT       21H
              MOV       BH ,BE
        CODE  ENDS
              END       MAIN
只有本站会员才能查看附件,请 登录


刚刚学汇编,上面是我写的一个测试程序,使用debug 命令查看寄存器的内容
我的问题是:1.各个寄存器的内容为什么是这些数字
            2.一个cpu有多少个AX,多少个BX……?
            请高手赐教
9 回复
#2
阿贝2009-11-25 13:24
难道寄存器存汉字啊,至于多少个AX,BX 我想没有多少个,而是容量多大。
#3
songsfly2009-11-25 14:03
回复 2楼 阿贝
我的意思是:为什么存的是这个数,而不是另一个数,我的代码对寄存器造成什么影响???是不是一个cpu只有一个AX一个bx??而不是你说的意思,如果连计算机用机器码来跑我都不懂我也不用学编程了,我知道我的问题很菜,但是我的确是不懂。。。。。
#4
dbx123582009-11-25 17:07
x86。我们学的8086、8088是一个AX,一个BX。总共14个16位的寄存器。
#5
onepc2009-11-25 17:18
以下是引用songsfly在2009-11-25 14:03:40的发言:

我的意思是:为什么存的是这个数,而不是另一个数,我的代码对寄存器造成什么影响???是不是一个cpu只有一个AX一个bx??而不是你说的意思,如果连计算机用机器码来跑我都不懂我也不用学编程了,我知道我的问题很菜 ...
为什么是这个数,是编译器已给定的一个地址而已,你是把那个段的地址传给cx.
在寄存器中存的都是数字。
#6
songsfly2009-11-25 18:44
回复 4楼 dbx12358
多谢版主
#7
songsfly2009-11-25 18:48
以下是引用onepc在2009-11-25 17:18:51的发言:

为什么是这个数,是编译器已给定的一个地址而已,你是把那个段的地址传给cx.
在寄存器中存的都是数字。



我的代码中有
 MOV       CX,DATA
              MOV       DS ,CX


              MOV       DX, 0003H
              MOV       AH,09H

按理DS=CX啊,而途中显示的是DS=0BA0,CX=02E4    ,而且mov dx,0003h这条指令不是应该将DX=0003H了么为何图中是dx=0000呢?还望版主解答啊~
#8
dbx123582009-11-25 23:08
MOV       CX,DATA
              MOV       DS ,CX

应该是把DATA的段基址送到DS
 MOV       DX, 0003H
              MOV       AH,09H
这样把操作数送进DX和AH 你的显示问题,我不知道怎么回事。
你可以用中断,在DOS里面看一下。注意显示的都是对应的ascii码。
#9
taan33252009-12-01 15:02
那个地址就是电脑根据当前电脑内存占用情况,分配的
#10
fgchg9112009-12-20 02:03
我在windbg里调试程序时发现,寄存器有
85个,
1