斯派 发表于 2013-11-12 20:11:36

王爽汇编实验五

assume cs:code
a segment
        db 1,2,3,4,5,6,7,8
a ends

b segment
        db 1,2,3,4,5,6,7,8
b ends

d segment
        db 0,0,0,0,0,0,0,0
d ends

code segment
        start:        mov ax,a
                        mov ds,ax
                        mov ax,b
                        mov es,ax
                        mov bx,0
                        mov cx,7
                s:        mov dl,ds:
                        add es:,dl
                        inc bx
                        loop s
                        mov bx,0
                        mov ax,d
                        mov ds,ax
                        mov cx,7
                s0:        mov dx,es:
                        mov ,dx
                        inc bx
                        loop s0
                       
                        mov ax,4c00H
                        int 21H
code ends
end start
把代码中
s:        mov dl,ds:
        add es:,dl

改成
s:        mov dx,ds:
        add es:,dx

结果就完全不同了,为什么???

狼性刀锋 发表于 2013-11-12 22:33:56

把代码中
s:      mov dl,ds:
      add es:,dl

改成
s:      mov dx,ds:
      add es:,dx
   dl是dx寄存器的一部分    。dx是16位寄存器 为了向下兼容
就有了dhdl两个八位寄存器。
因此adddl   和 add dx是不一样的   ,一个操作的是字节    另一个操作是双字节。

康小泡 发表于 2013-11-13 22:42:23

这个问题你没弄清楚其实可以倒回去看看四章那里重点讲的是单元的操作你可以看看 开始我也不是很明白

斯派 发表于 2013-11-14 20:42:28

kklloo 发表于 2013-11-13 22:42 static/image/common/back.gif
这个问题你没弄清楚其实可以倒回去看看四章那里重点讲的是单元的操作你可以看看 开始我也不是很明白

谢谢...........

斯派 发表于 2013-11-14 20:43:22

狼性刀锋 发表于 2013-11-12 22:33 static/image/common/back.gif
把代码中
s:      mov dl,ds:
      add es:,dl


谢谢....................
页: [1]
查看完整版本: 王爽汇编实验五