- [cutebe] 相当牛,这个苦思冥想也值了。^_^ 11/30 00:00
- [parse] 如果忽略消息循环,那么操作系统加载的程序很快就执行完了,就像DOS程序一闪而过,所以CPU会空闲下来 06/30 09:04
- [游客] 楼主好厉害,挺一下! 01/19 08:43
- [游客] 很不错。 01/04 18:36
- [chinatree] 潜力贴留名,沙发。 11/08 12:58
- [youthangel] 恩,这次对了 10/30 18:56
- [fpamc] mov bx,18 在这条指令的上边是不是要加一条sub dx,dx? 10/30 10:03
- [fpamc] 对的 10/27 11:19
- [fpamc] 对的 10/27 09:00
- [fpamc] 哦,对不起,看错了。实验13也有一个7ch中断 10/27 08:52
- [游客] 现在急需一个汇编大作业。。。。。。可以么。。。。。如果今天之内看见留言 就加 1765496715 12/28 16:52
- [youthangel] 这算是对我学习的鼓励吗?谢谢!咱们这样交流就可以了 10/11 15:48
- [fpamc] 多日观察,你的学习积极性挺高的。可以来我们群了。群号:75916434 10/11 10:58
[2012-10-10 18:08] 实验七
comment ; 块注释
失误:
1、把数据输错了
2、偏移量计算失误
3、想到了除法溢出,但此处好像不需要
说明:
1、bx作为年份的偏移
2、bx+idata作为收入的偏移,bx每次加4
3、si作为雇员数的偏移的,以上偏移的段地址在ds中
4、es:[di]->table中的单元
;
assume cs:code,ds:data
data segment
;年份
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989', '1990','1991','1992','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 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 ;ds:bx->数据
mov si,168 ;ds:si->雇员人数
mov ax,table
mov es,ax
mov di,0 ;es:di->表格
mov cx,21 ;循环21次
s:
;复制年份
mov ax,[bx]
mov dx,[bx+2]
mov es:[di],ax
mov es:[di+2],dx ;完成复制年份 四个字节
;复制收入
mov ax,[bx+84]
mov dx,[bx+86]
mov es:[di+5],ax
mov es:[di+7],dx ;完成收入的复制
div word ptr[si]
;将人均收入放入指定位置
mov es:[di+13],ax
;复制雇员数
mov ax,[si]
mov es:[di+10],ax ;完成雇员数的复制
add bx,4
add si,2
add di,10h
loop s
;退出
mov ax,4c00h
int 21h
code ends
end start
失误:
1、把数据输错了
2、偏移量计算失误
3、想到了除法溢出,但此处好像不需要
说明:
1、bx作为年份的偏移
2、bx+idata作为收入的偏移,bx每次加4
3、si作为雇员数的偏移的,以上偏移的段地址在ds中
4、es:[di]->table中的单元
;
assume cs:code,ds:data
data segment
;年份
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984'
db '1985','1986','1987','1988','1989', '1990','1991','1992','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 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 ;ds:bx->数据
mov si,168 ;ds:si->雇员人数
mov ax,table
mov es,ax
mov di,0 ;es:di->表格
mov cx,21 ;循环21次
s:
;复制年份
mov ax,[bx]
mov dx,[bx+2]
mov es:[di],ax
mov es:[di+2],dx ;完成复制年份 四个字节
;复制收入
mov ax,[bx+84]
mov dx,[bx+86]
mov es:[di+5],ax
mov es:[di+7],dx ;完成收入的复制
div word ptr[si]
;将人均收入放入指定位置
mov es:[di+13],ax
;复制雇员数
mov ax,[si]
mov es:[di+10],ax ;完成雇员数的复制
add bx,4
add si,2
add di,10h
loop s
;退出
mov ax,4c00h
int 21h
code ends
end start
评论次数(1) |
浏览次数(140) |
类型(汇编作业) |
收藏此文 |