关于第八章 实验7
小伙伴们你们好我做这个实验得时候 弄了好久。。。。好几个小时才完成
还是看了小甲鱼得 视频 如果没有视频得画 我想我根本弄不出来
感谢小甲鱼
这里分享几个 我得错误点 。。。希望大家不要像我一样掉在坑里
下面是我得代码
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983' 首先我在这里出错了, 就是。。db 后跟着得元素之间 需要 逗号隔开。。我开始得时候没写。
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 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
dw 11452,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stacksg
mov ss,ax
mov sp,10H
mov bx,0
mov si,0
mov di,0
mov cx,21
s0:push cx
mov cx,4
s1:mov al,
mov es:,al
inc bx
inc di
loop s1
inc di
mov ax,50h
push ax
mov dx,52h
mov es:,ax
add di,2
mov es:,dx
add di,2
inc di
mov ax,0a3H
mov es:,ax
add di,2
inc di
pop ax
div word ptr 0a8h
mov es:,ax
add si,2
add di,2
inc di
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
总结
我用得方法 挺笨得 di 慢慢累加 为了 格式好看有的地方 我还是用了 inc其实可以用 add di ,3但是方便大家看把
中间有一点 我push了 ax 是因为 我懒得改 寄存器了。。 因为我忘了后面要做除法了。。。中间把ax用了。。
我有个想法 想着 一次性 在 栈段把 数据写好 16个字节 在全部 loop 灌入到 table 里面 这应该是一个很有趣得事
因为才学了几天 好多知识 还很不熟练 在写这个程序得时候 我还是从新翻了笔记。。我觉得除法这块有点绕
几个寄存器也搞得我有点晕头转向
bx ds di 。。。
然后 再次感谢小甲鱼
cs:ip 代码段寻址
ds:[内存] 数据段寻址
ss:sp 堆栈段寻址,bp用于在堆栈中定位
其它普通的寄存器ax,bx之类的用作临时保存数据
基本上就是这样吧。。
页:
[1]