王爽的书的第八章实验七程序求助
实验七没有做出来,做出来的人请帮助我看看程序,错在哪里?拷贝了四行的年份和收入,程序如下:
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: ;
mov es:,al
mov al, ds:
mov es:,al
mov al, ds:
mov es:,al
mov al, ds:
mov es:,al
mov al,0h
mov es:,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:
mov es:, ax
mov dx, ds:
mov es:, 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 中看到每个字节都逆序的原因。需要说明的是,字节逆序的现象仅存在于数值型变量中,字符串则不存在。
可是我只是移动啊,移动的时候应该原样copy,不应该逆序吧。 那这样写进去是不是就可以了?每次都要这样来读内存中的数字。
页:
[1]