王爽汇编课程设计1 mov 指令执行完之后没有将数值导入

小弟初学汇编语言,很多的问题都不懂,希望大家可以指导一下,多谢!

assume cs:code,ds:data,ss:stack,es:table
data segment

db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
;21年21个字符串 21*4=84 0-83   0-53

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd  345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;21年总收入21个DWORD 21*4=84 84-167 54-a7 si

dw  3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw  11542,14430,15257,17800
;21年总雇员数21个WORD 21*2=42 168-209 a8-209 di

data ends

table segment
        db 48 dup (0)   ;210-247    d2-f7 
table ends

stack segment
        db 48 dup (0)   ;248-295    f8-127
stack ends

code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,48
mov ax,table
mov es,ax

mov di,0
mov si,0
mov bx,0
mov cx,0
mov dx,0

call divresult



mov ax,4c00h
int 21h

divresult:

mov si,84
mov di,168
mov cx,2

mov ax,ds:[si]
mov dx,ds:[si+2]

r1:
mov cx,ds:[di]
div cx
add dx,30h
mov es:[bx],dx;就是这里执行完之后在es:[0]显示依旧为0,dx的值没有进去
add bx,2
mov dx,0
mov cx,ax
jcxz r1
ret

code ends
end start

你好,我也在学习汇编嘻嘻,一同进步.

关于你的问题,我做这道题也遇到了,我当时也是很奇怪,好多内存单元的值为0.事实上,要注意那是16进制,且大的两位再后,小的在前,我们看着会很抽象的.

我的方法是,下载别人做完的结果(图片),和我的显示结果对照,这样就可以直观的检测我做对了没.

我记得最后的显示结果,只有年份是可以显示的(因为那是ascii码),其他的都是点和一些意义不明的字符