|
主题 : : 看看高手是怎么写试验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
-------------------------------------------------------------------
栈的使用、结构化程序设计的思想...
话就不多说了,自己体会吧 | | |
|
|
|
|
[第20楼] [ 回复时间:2009-08-06 02:37 ] | |
荣誉值:2
信誉值:0
注册日期:2009-04-08 06:33 |
都说思路好,可指令多了点
我没用栈,不知道我的思路好不好?请大家看看
assume cs:code,ds:data,ss: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年的 年份字符串,每个年份字符串都占了两个字的空间
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
code segment
start:mov ax,data;初始化
mov ds,ax
mov ax,table
mov ss,ax
mov si,0;指向一年的年份数据,和总收入数据
mov bx,0;指向一年的人数数据
mov bp,0;指向表的行
mov cx,21
s:mov ax,[si];处理年的数据
mov [bp],ax
mov ax,[si+2]
mov [bp+2],ax
mov ax,[si+54H];处理总收入数据
mov dx,[si+56H]
mov [bp+5H],ax
mov [bp+7H],dx
div word ptr [bx+0a8H];处理人均收入数据
mov [bp+0DH],ax
mov ax,[bx+0a8H];处理人数数据
mov [bp+0aH],ax;数据至此全部处理完毕
add si,4;指向下一年
add bp,10H;指向下一行
add bx,2;指向下一年
loop s
mov ax,4c00H
int 21H
code ends
end start | | |
|