| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
实验七没有做出来,做出来的人请帮助我看看程序,错在哪里? 
 
拷贝了四行的年份和收入,程序如下: 
assume cs:codesg, ds:datasg, ss:stacksg 
datasg segment 
  db '1975','1976','1977','1978' 
  dd 16,22,382,1356 
  dw 3,7,9,13 
datasg ends 
stacksg segment 
  dw 0,0,0,0,0,0,0,0 
stacksg ends 
table segment 
  db 4 dup('year summ ne ??') 
table ends 
codesg segment 
start: mov ax,datasg 
       mov ds,ax 
       mov ax,stacksg 
       mov ss,ax 
       mov sp,16 
       mov ax,table 
       mov es,ax 
 
       mov bx,0 
       mov si,0 
       mov cx,4 
    s0:mov ax,si 
       mov di,4 
       mul di 
       mov di,ax 
       mov al, ds:[bx+si+0]       ;  
       mov es:[bx+di+0],al 
       mov al, ds:[bx+si+1] 
       mov es:[bx+di+1],al 
       mov al, ds:[bx+si+2] 
       mov es:[bx+di+2],al 
       mov al, ds:[bx+si+3] 
       mov es:[bx+di+3],al 
       mov al,0h 
       mov es:[bx+di+4],al 
       add si,4 
       loop s0 
        
       add bx,5 
       mov si,0 
       mov cx,4 
    s1:mov ax,si 
       mov di,4 
       mul di 
       mov di,ax 
       mov ax, ds:[si+16] 
       mov es:[bx+di+0], ax 
       mov dx, ds:[si+18] 
       mov es:[bx+di+2], dx 
       add si, 4 
       loop s1 
 
       mov ax,4c00h 
       int 21h 
codesg ends 
end start 
 
拷贝收入的部分我觉得没有什么问题啊,怎么debug的时候双字的每个字节都逆序。 
不能上传图片。 
-d 076e:0 
076e:0000 31 39 37 35 00 10 00 00 00 20 6E 65 20 3F 3F 79     1975 ...... ne ??y 
076e:0010 31 39 37 36 00 16 00 00 00 6E 65 20 3F 3F 79 65     1976.......ne??ye 
076e:0020 31 39 37 37 00 7E 01 00 00 65 20 3F 3F 79 65 61     1977.......e ??yea 
076e:0030 31 39 37 38 00 4c 05 00 00 20 3F 3F 00 00 00 00     1978.L... ?? ....... 
 
 
 
 本帖最后由 jackz007 于 2019-1-20 22:11 编辑  
 
      Intel 采用 Little-Endians 模式,数值在内存中存储时,高字节将保存在高地址中。例如,对于 dword 型的变量 0x12345678,我们在内存中能看到的形式将是 78 56 34 12。这就是楼主在 debug 中看到每个字节都逆序的原因。需要说明的是,字节逆序的现象仅存在于数值型变量中,字符串则不存在。 
 
 
 
 |   
 
 
 
 |