王爽汇编实验7 解答
2010-07-06 09:45
183 查看
ASSUME CS:codesg,DS:data,es:table,ss:stack
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'
;以上是表示21年的21个字符串
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据
DW 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
DW 11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据
data ENDS
table SEGMENT
DB 21 DUP ('year summ ne ?? ')
table ENDS
stack SEGMENT
DW 0,0
stack ENDS
codesg SEGMENT
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,4 ;指向栈底
mov bx,0 ;内存逐个读取
mov si,0 ;table段换行,间隔16
mov cx,21 ;外层循环计数
s0: push cx
mov bp,0
mov cx,4 ;内层循环计数
s1: mov al,ds:0[bx]
mov es:[si][bp],al ;记录年份
mov al,ds:84[bx]
mov es:[si].5[bp],al ;记录收入
inc bx ;bx累加4次后si累加一次,4*21次循环
inc bp
loop s1
pop cx
add si,16
loop s0 ;记录完所有年份和收入
mov bx,0 ;内存逐个读取
mov si,0 ;table段换行,间隔16
mov cx,21 ;外层循环计数
r0: push cx
mov bp,0
mov cx,2 ;内层循环计数
r1: mov al,ds:168[bx]
mov es:[si].10[bp],al ;记录人员
inc bx
inc bp
loop r1 ;bx累加2次后si累加一次,2*21次循环
add si,16
pop cx
loop r0 ;记录完所有人员
mov bx,0
mov di,0
mov si,0
mov cx,21
sr: mov ax,ds:84[bx]
add bx,2
mov dx,ds:84[bx] ;将收入储存到DX和AX寄存器中
div word ptr ds:168[di] ;读取内存中人员数量作为除数
mov es:[si+13],ax ;将人均收入(取整)存入到内存中
add di,2
add si,16
loop sr
MOV AX,4c00h
INT 21h
codesg ENDS
END start
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'
;以上是表示21年的21个字符串
DD 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
DD 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据
DW 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
DW 11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据
data ENDS
table SEGMENT
DB 21 DUP ('year summ ne ?? ')
table ENDS
stack SEGMENT
DW 0,0
stack ENDS
codesg SEGMENT
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,4 ;指向栈底
mov bx,0 ;内存逐个读取
mov si,0 ;table段换行,间隔16
mov cx,21 ;外层循环计数
s0: push cx
mov bp,0
mov cx,4 ;内层循环计数
s1: mov al,ds:0[bx]
mov es:[si][bp],al ;记录年份
mov al,ds:84[bx]
mov es:[si].5[bp],al ;记录收入
inc bx ;bx累加4次后si累加一次,4*21次循环
inc bp
loop s1
pop cx
add si,16
loop s0 ;记录完所有年份和收入
mov bx,0 ;内存逐个读取
mov si,0 ;table段换行,间隔16
mov cx,21 ;外层循环计数
r0: push cx
mov bp,0
mov cx,2 ;内层循环计数
r1: mov al,ds:168[bx]
mov es:[si].10[bp],al ;记录人员
inc bx
inc bp
loop r1 ;bx累加2次后si累加一次,2*21次循环
add si,16
pop cx
loop r0 ;记录完所有人员
mov bx,0
mov di,0
mov si,0
mov cx,21
sr: mov ax,ds:84[bx]
add bx,2
mov dx,ds:84[bx] ;将收入储存到DX和AX寄存器中
div word ptr ds:168[di] ;读取内存中人员数量作为除数
mov es:[si+13],ax ;将人均收入(取整)存入到内存中
add di,2
add si,16
loop sr
MOV AX,4c00h
INT 21h
codesg ENDS
END start
相关文章推荐
- 王爽 汇编语言 实验9:显示解答
- 王爽<汇编语言>实验14 访问CMOS RAM 解答(详细注释)
- 王爽 汇编 实验11:编写子程序letterc 解答
- 王爽-汇编语言(第一版) 实验9
- 汇编语言(王爽 第三版)实验十
- 汇编语言 王爽 实验9 转移指令的原理
- 【汇编语言】王爽第三版----------------实验9
- 汇编语言(王爽)第六章检测点与实验5
- 王爽汇编语言第二版学习笔记之实验11
- 王爽 汇编语言 第三版 实验10 编写子程序
- 王爽 汇编语言 第三版 实验15 安装新的int 9中断例程
- 汇编语言 王爽 实验十 数值显示
- 王爽 汇编语言 实验7
- 王爽 汇编语言 实验七
- 王爽汇编第二版第7章实验6
- 王爽 汇编 实验12 编写0号中断的处理程序
- 王爽 汇编 实验13:编写、应用中断进程
- 王爽 汇编 实验14
- 王爽 汇编语言第二版 实验9 根据材料编程 代码及分析
- 王爽《汇编语言》第八章实验七 题目分析解答