sanshaoye 发表于 2011-12-25 21:12:45

求解:实验五

实验五 6小题:
我做得解答: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

c segment
        db 0,0,0,0,0,0,0,0
c ends

code segment
       
        start:
       
        mov ax,a
        mov es,ax
       
        mov ax,c
        mov ds,ax
       
        mov bx,0
        mov cx,8
       
        s0:
        mov al,es:
        mov ,al
        inc bx
        loop s0
       
        mov ax,b
        mov es,ax
       
        mov ax,c
        mov ds,ax
       
        mov bx,0
        mov cx,8
       
        s1:
        mov al,es:
        add ,al
        inc bx
        loop s1
       
       
        mov ax,4c00h
        int 21h

code ends

end start网上的答案: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



c segment

      db 0,0,0,0,0,0,0,0

c ends



code segment

start:mov ax,a

      mov es,ax

      mov ax,c

      mov ds,ax

      mov bx,0

      mov cx,8



   s1:mov ax,es:

      add ,ax

      add bx,2

      loop s1



      mov ax,b

      mov es,ax

      mov ds,ax

      mov bx,0

      mov cx,8



   s2:mov ax,es:

      add ,ax

      add bx,2

      loop s2



      mov ax,4c00h

      int 21h

code ends

end start
都能正确运行,为什么
s2:mov ax,es:

      add ,ax

      add bx,2
能正确运行
如果偏移了两个单元,后续的第二个单元怎么会正确取出数据

sanshaoye 发表于 2011-12-25 21:28:31

我知道了,刚刚调试了下,网上的程序应该改为mov cx,4更为准确,mov cx,8做了无用功。
本来按照我得程序一次偏移一个单元,做一次计算,可以一次偏移两个单元,一次做两次计算
页: [1]
查看完整版本: 求解:实验五