|
主题 : : 实验 7 --------------------准确答案,, 自己编写..经调试验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [已解决] |
回复[ 2次 ]
点击[ 510次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2013-05-10 02:41 ]
[引用]
[回复]
[ top ] | |
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06 |
今天看了第八章,用了一晚上搞完-.- 这个程序想了2个钟头没了.没参考
栈段的我不想尝试了, 休闲时间,
_______________________________
assume cs:codesg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983' ;1个年份占4字节
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995';以上表示21年的21个字符串 ;data:53 84个字节
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 ;1个数据占4字节
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上表示21年公司总收入的21个dword型数据 ;data:A7 ;21*4(84)+84=168个字节单元
dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226
dw 11542, 14430, 15257, 17800 ;1个数据占2个字节
;以上表示21年公司雇员人数的21个word型数据 ;data:D1 ;168+21*2(42)=210个字节单元
data ends
table segment
db 21 dup ('year summ ne??')
table ends
codesg segment
start: mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov bx,0
mov si,0
mov di,0
mov cx,21
s:
mov ax,[si]
mov es:[bx],ax
mov ax,[si].2
mov es:[bx].2,ax
mov ax,[si].84
mov es:[bx].5,ax
mov ax,[si].86
mov es:[bx].7,ax
mov ax,[di].168
mov es:[bx].0AH,ax
; 以下为什么要用到 DX , 因为收入数据超过单个寄存器所能存放的数值上限,需要用2个寄存器配合,即 AX.DX 被除数 DS:AX
;因为被除数是32位 所以除数必须是16位的, 则要指定内存单元为word字型
mov ax,es:[bx].5
mov dx,es:[bx].7
div word ptr [di].168
mov es:[bx].0DH,ax ; DX存放余数 AX存放商
add bx,10H
add di,2
add si,4
loop s
mov bx,0
mov cx,21
s0: mov byte ptr [bx].5,20H ;空格 或 mov al,20H mov [bx].4,al
mov byte ptr [bx].10,20H ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据
mov byte ptr [bx].13,20H
mov byte ptr [bx].16,20H
add bx,10h
loop s0
mov ax,4c00h
int 21h
codesg ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2013-05-11 08:09 ]
[引用]
[回复]
[ top ] | |
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06 |
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
s0: mov byte ptr [bx].5,20H ;空格 或 mov al,20H mov [bx].4,al
mov byte ptr [bx].10,20H ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据
mov byte ptr [bx].13,20H
mov byte ptr [bx].16,20H
打错了,,, 原来是 要加es的
_____________________________________________________
s0: mov byte ptr es:[bx].4,20H ;空格 或 mov al,20H mov [bx].4,al
mov byte ptr es:[bx].9,20H ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据
mov byte ptr es:[bx].12,20H
mov byte ptr es:[bx].15,20H | | |
|
|
|
|
[第2楼]
[ 回复时间:2013-05-13 08:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06 |
此贴由 贴主 于 [ 2013-05-13 08:08 ] 结贴。 结贴原因:问题已解决 | | |
|