本想用栈和多个循环,结果越考虑越迷糊,先把自己弄了两天的发上来,再学学其他学长的程序设计
assume cs:code,ds:data
data segment
db '197519761977197819791980198119821983198419851986198719881989199019911992199319941995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
mov si,0
mov di,0
mov cx,21
s:mov ax,table
add ax,di
mov es,ax
mov ax,[bx]
mov es:[0],ax
mov ax,[bx+2]
mov es:[2],ax
mov ax,[bx+84]
mov es:[5],ax
mov ax,[bx+86]
mov es:[7],ax
mov ax,[si+168]
mov es:[10],ax
mov ax,[bx+84]
mov dx,[bx+86]
div word ptr [si+168]
mov es:[13],ax
add bx,4
add si,2
inc di
loop s
mov ax,4c00h
int 21h
code ends
end start
- [tinyparticle] 不错,思路清晰 09/29 21:22
- [wsrf] 正确。 09/16 09:22
- [wsrf] 这个用DEBUG查看一下程序所占字节数就可以了,没有必要把每条指令所占字节数都记住,博主的做法是正确 09/16 08:22
- [tinyparticle] 取cx=0(cx取0-ffffh所占字节数是一样的),进debug查看程序总长度。提示:查看书P91 09/11 20:07
- [huibian2009] 呵呵,逻辑错误就是在编译的时候可以通过,但在执行的过程中会发生错误。 09/10 11:39
- [huibian2009] 呵呵,这道题考查的是对栈空时栈顶的设置,可以参考教程上关于栈的相关章节。这道题应该是选第1个。 09/09 08:37
- [911911] 谢谢已改正 09/08 15:51
- [wsrf] (1)说修改的内容的时候应该是从高字节到低字节写起。如内存单元220FE存储的字为5CCA,而不应该 09/08 08:53
- [911911] 改正了, 特意看了看前面章节的举例 才发现举的DEBUG操作时 数据是不加H的 写段程序指令时数据都 09/07 11:26
- [mywiil] debug下默认的就是16进制,所以不用加H,但是源代码中是需要加H的,因为源程序在编译的时候,数据 09/07 09:12