|
主题 : : 第八章 监测点 不对之处 忘批评指正 [待解决] |
回复[ 2次 ]
点击[ 443次 ] | |
荣誉值:0
信誉值:0
注册日期:2014-08-07 13:06 |
assume cs:ym
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983' ;每个字符串4字节总共21个 4X21=84转换54H
db '1984','1985','1986','1987','1988','1989','1990','1991','1992' ;年份 字节从0开始0-53H
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 ;dd双字8个字节 共21X8=168转换0a8;
dd 345980,590827,803530,1183000,1843000,2759000,3759000,4649000,5937000; 年份后面开始写入54H-0a7
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800 ;一个字2字节 共21X2=42转换2a+0a7=0d1 从收入后面写入雇佣:0a8-0d1
data ends
tabil segment
db 21 dup ('year sume ne ')
tabil ends
ym segment
start:mov ax,data ;ax与data挂钩
mov ds,ax
mov ax,tabil ;ex与tabil挂钩
mov es,ax
mov si,0
mov di,0
mov bx,0
mov cx,21 ;循环 21次
;取年份
s:mov ax,ds:[si] ;偏移0=si十六位寄存器ds:si的数据送入ax得到19
mov bx,ds:[si+2];偏移2=si十六位寄存器ds:si的数据送入bx得到75
;入年份
mov es:[si],ax ;将取到的数据17送入es:0处
mov es:[si+2],bx ;将取到的数据75送入es:si+2处
;取收入
mov ax,ds:54h[si] ;取ds中的收入位置 ds:54h[si] 00 00
mov bx,ds:54h[si+2];四个字节 取值方法同上’年份‘ 00 16
;入收入
mov es:54h[si],ax ;将取到的收入 四字节送入es:054处00 00
mov es:54h[si+2],bx ;00 16
mov ax,ds:0a8h[di] ;取雇员数
mov es:0a8h[di],ax ;入雇员数 送入es:0a8处
;平均收入开始
mov ax,ds:[si+54h];最高收入超过65536 取一个字低位送入ax
mov dx,ds:[si+54h+2];取一个字高位送入dx
div word ptr ds:[di+0a8h];除以ds:di+0a8h的人数
mov es:[di+0d2h],ax;收入送入es:di+0d2h处
add di,2
add si,4
loop s ;循环尾
mov ax,4c00h ;返回
int 21h
ym ends
end start
;仔细想了1天,
;遇到一大堆问题,各种调试
;总算写好了。 | | |