|
主题 : : 看看高手是怎么写试验7代码的!!!强烈推荐中... [待解决] |
回复[ 104次 ]
点击[ 9699次 ] | |
|
|
|
|
[帖 主] [ 发表时间:2008-10-10 02:55 ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-03 00:18 |
DATAS 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'
DD 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
DD 345980, 590827, 803530, 118300, 184300, 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
DATAS ENDS
TABLE SEGMENT
DB 21 DUP ('year summ ne ?? ')
TABLE ENDS
STACKS SEGMENT
DB 16 DUP (0)
STACKS ENDS
ASSUME CS:CODES,DS:DATAS,SS:STACKS
CODES SEGMENT
START:
;相关寄存器初始化
MOV AX,DATAS
MOV DS,AX
MOV AX,TABLE
MOV ES,AX
MOV AX,STACKS
MOV SS,AX
MOV SP,16
MOV BX,0
MOV BP,0
MOV DI,0
MOV SI,0
MOV CX,21
cycle: ;使用栈复制年份
PUSH [DI].0
PUSH [DI].2
POP ES:[BP].2
POP ES:[BP].0
;使用栈复制收入
PUSH 54H.[DI].0
PUSH 54H.[DI].2
POP ES:[BP].7
POP ES:[BP].5
;使用栈复制雇员数
PUSH 0A8H.[SI]
POP ES:[BP].0AH
;计算人均收入
MOV AX,ES:[BP].5
MOV DX,ES:[BP].7
DIV WORD PTR ES:[BP].0AH
MOV ES:[BP].0DH,AX
ADD SI,2H
ADD DI,4H
ADD BP,10H
loop cycle
MOV AH,4CH
INT 21H
CODES ENDS
END START
-------------------------------------------------------------------
栈的使用、结构化程序设计的思想...
话就不多说了,自己体会吧 | | |
|
|
|
|
[第17楼] [ 回复时间:2009-06-07 12:54 ] | |
荣誉值:0
信誉值:0
注册日期:2009-06-03 15:34 |
我这个程序有一个错误!我不知道错在那里!
希望兄弟们帮忙解决以下
谢谢了!
assume cs:codesg,ds:data,es:table
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个年份字符(0-83)
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是21个双字型收入数据(84-167)
dw 3,7,9,13,28,,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
;以上是21个字型雇员数据(168—)
data ends
table segment
db 21 dup ('year sume ne ??' )
table ends ;21个数据放置点
codesg segment
start: mov ax,data
mov ds,ax
mov si,0
mov di,0 ;定义数据段
mov ax,table
mov es,ax
mov bx,0 ;定义table段
mov cx,21 ;循环21次
s: mov ax,ds:[si]
mov word ptr es:[bx],ax
mov ax,ds:[si+2]
mov word ptr es:[bx+2],ax ;完成年份的处理
mov ax,ds:[168+di]
mov word ptr es:[bx+10],ax ;完成雇员数据的处理
mov ax,ds:[84+si]
mov word ptr es:[bx+5],ax
mov dx,ds:[86+si]
mov word ptr es:[bx+7],dx ;完成收入数据的处理
div word ptr es:[bx+10]
mov word ptr es:[bx+13],ax ;完成人均收入数据的处理
add si,4
add di,2
add bx,10h ;为下一轮做准备
loop s
mov ax,4c00h
int 21h ;返回
codesg ends
end start | | |
|