花了两天十几个小时终于完成了,太苦了,坐在电脑前脚冰凉的,看了屏幕显示出最后的结果,心里有所安慰了。
assume cs:code
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'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3735000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
zhongj segment
db 10 dup (0)
zhongj ends
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov cx,21
mov ax,stack
mov ss,ax
mov sp,10h
mov bx,0
mov ax,table
mov es,ax
mov di,0
mov bp,0
s0:
push cx
mov cx,4
mov si,0
s1:
mov al,ds:[bp+si]
mov es:[bx+si],al
inc si
loop s1 ;年份
mov cx,2
mov si,0
s2:
mov ax,ds:[bp+84+si]
mov es:[bx+5+si],ax
add si,2
loop s2 ;雇员
mov ax,ds:[di+168]
mov es:[bx+10],ax ;收入
mov dx,es:[bx+7]
mov ax,es:[bx+5]
div word ptr es:[bx+10]
mov word ptr es:[bx+13],ax ;人均
add bp,4
add di,2
add bx,10h
pop cx
loop s0
;_________以上实验7______________________
mov bp,0
mov di,0
mov cx,21
zs: push cx
push di
mov si,0
mov ax,table
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov cx,4
shu1:mov al,ds:[bx+di]
mov es:[4+si+bp],al
inc bx
add si,2
loop shu1 ;输出年份
;-------------------------------------------------
mov ax,table
mov es,ax
mov ax,zhongj
mov ds,ax
mov bx,0
mov cx,10
pop di
mov al,es:[bx+di+5]
inc bx
mov ah,es:[bx+di+5]
inc bx
mov dl,es:[bx+di+5]
inc bx
mov dh,es:[bx+di+5]
push di
mov di,0
call dtoc ;收入转换
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov cx,di
shu2: mov al,ds:[bx]
mov es:[48+si+bp],al
inc bx
add si,2
loop shu2 ;收入输出
;------------------------------------------------
mov ax,table
mov es,ax
mov ax,zhongj
mov ds,ax
pop di
mov bx,0
mov cx,10
mov al,es:[bx+di+10]
inc bx
mov ah,es:[bx+di+10]
mov dx,0
push di
mov di,0
call dtoc ; 雇员转换
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov cx,di
shu3: mov al,ds:[bx]
mov es:[94+si+bp],al
inc bx
add si,2
loop shu3 ;雇员输出
;---------------------------------------------------
mov ax,table
mov es,ax
mov ax,zhongj
mov ds,ax
pop di
mov bx,0
mov cx,10
mov al,es:[bx+di+13]
inc bx
mov ah,es:[bx+di+13]
mov dx,0
push di
mov di,20
call dtoc ;人均转换
mov ax,0b800h
mov es,ax
mov si,0
mov bx,0
mov cx,di
shu4: mov al,ds:[bx]
mov es:[136+si+bp],al
inc bx
add si,2
loop shu4 ;人均输出
;--------------------------------------------
pop di
add bp,160
add di,16
pop cx
sub cx,1
jcxz jieshu
jmp zs
jieshu: mov ax,4c00h
int 21h
;------------------------------------
dtoc:
mov si,0
s:call divdw
push dx ;将余数入栈保存
push cx ;将cx(除数)保存
inc si ; 累加除法次数
mov dx,bx ;高16位送入
mov cx,bx ;高16位送入进行判断
jcxz bk ;如为0再判断低16位
pop cx
jmp s
bk:
mov cx,ax
jcxz ok ;低16位如为0则跳出
pop cx
jmp s
ok:
mov bx,0
pop cx
mov cx,si
mov di,si
baocun:
pop ax
add al,30h
mov ds:[bx],al
inc bx
loop baocun ;将转换后的十进制字符保存
ret
;--------------------------------
divdw:
mov bx,ax
mov ax,dx
mov dx,0
div cx ; 完成公式前部分
push ax ;将商高16位入栈,余数在dx中
mov ax,bx ;将原始数的低16位送入
div cx ; 完成公式后部分
pop bx ;将商高16位出栈到bx
ret
code ends
end start
后记:
爱因斯坦将牛顿作为偶像,结果他推翻了牛顿;我将爱因斯坦作为偶像,我却什么也推翻不了,人生不要好高骛远,只有试着战胜自己了,今天最后终于成功了,几次思路堵塞想参考别人的,最后想着还是挑战一下自己吧,还好,有了结果。哈哈,调侃一下,枯燥的学习之后,放松下自己,也正好留个纪念。
昨天看了纪实片《爱因斯坦》,在这里向伟大的科学家们致敬!没有他们,我们估计还生活在石器时代,更不要说上汇编网学习了,见笑了。
- [tomato] 课设二很有意思,也很有用,一定不要省略掉。 01/16 22:57
- [cpt1975] 加了实验17读软驱的图片,多谢指导。快学完了,课程设计2感觉很难的,年前完成不了就年后继续吧。 01/15 16:32
- [tomato] 祝贺博主快学完了啊! 另外,建议博主,将结果图片发上来,更清晰。 01/14 11:42
- [tomato] 正确。 01/14 11:41
- [powerofthinking] 哈哈,最后二句很有深意。 其实远离政治,保持中立,不谈国事,就是一种政治立场。 就像中国很喜欢在 01/01 18:23
- [tomato] 谢谢推荐,看了看! 12/31 20:47
- [tomato] 这部分内容需要多练习才行。 12/29 22:34
- [powerofthinking] 没有思考就没有发言权 博主说的不错!黑格尔云:A nation needs someone who 12/28 17:00
- [tomato] 没问题。 12/22 23:14
- [tomato] 这下好了。 12/15 21:48