代码:
assume cs:code,ds:data,es:table
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982'
db '1983','1984','1985','1986','1987','1988','1989','1990'
db '1991','1992','1993','1994','1995'
;以上是表示21年的21个字符串 ds-10H:0--21*4-1
dd 16,22,382,1356,2390,8000,16000,24486
dd 50065,97479,140417,197514,345980,590827,803530,1183000
dd 184300,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据 ds-10H:21*4 21*8
dw 3,7,9,13,28,38,130,220
dw 476,778,1001,1442,2258,2793,4037,5635
dw 8226,11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
code segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov bp,0
mov cx,21
;写入年份
s: mov si,0
mov di,0
mov ax,[bx].[si]
mov es:[bp].[di],ax
mov ax,[bx].2[si]
mov es:[bp].2[di],ax
;写入收入
add si,54H
add di,5
mov ax,[bx].[si]
mov es:[bp].[di],ax
mov ax,[bx].2[si]
mov es:[bp].2[di],ax
;增量变化
add bx,4
add bp,10H
loop s
;写入雇员
mov cx,21
mov bp,0
mov bx,0
mov si,0a8H
mov di,10
s1: mov ax,[bx].[si]
mov es:[bp].[di],ax
;增量变化
add bx,2
add bp,10H
loop s1
;写入人均收入
mov cx,21
mov bp,0
mov si,5
s2: mov ax,es:[bp].[si]
mov dx,es:[bp].2[si]
mov bx,es:[bp].5[si]
div bx
mov es:[bp].8[si],ax
;增量变化
add bp,10H
loop s2
mov ax,4c00H
int 21H
code ends
end start
;我调试过成功了,不过代码很繁琐,还要精简。希望大家多多指点!
- [游客] 厉害,自己独立完成课设一,这本书就掌握多一半了。 10/24 16:23
- [tolearn] 嗯, 10/19 07:11
- [huang425618] 同学,检测10.5第二题你错了哦,ax的值是1哦,在 call dword ptr ss:[0]下 10/18 22:42
- [lk524849699] 这mov ax,4c00h int 21h 10/15 22:37
- [tolearn] 哪里? 10/15 22:29
- [lk524849699] 这不是有输出啊,还说不明白! 10/15 22:19
- [tolearn] 修改了一下 10/09 17:15
- [tolearn] 哦,对!谢谢提醒! 10/09 15:30
- [mess] 十六进制,别忘了写H。 10/09 15:11
- [mess] 等做了这章的实验,博主可以自己用debug验证下 ^_^ 10/09 15:10
- [tolearn] 最近学习比较紧,汇编进程就拉下来了 10/27 10:30
- [tolearn] 希望大家看完之后能够指点一二! 10/19 08:50
- [tolearn] 没人评论的日子我该怎么过…… 10/18 20:25
- [tolearn] 汇编,我已经感觉到你的强大了! 10/15 21:31
- [tolearn] 郁闷的网,检测到一半断线, 10/15 09:35
- [tolearn] 多实践,多思考,多看论坛。 牙好,胃好,身体倍棒! 10/11 20:13
- [tolearn] 汇编,值得去学习! 10/10 12:15