|
主题 : : 看看高手是怎么写试验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
-------------------------------------------------------------------
栈的使用、结构化程序设计的思想...
话就不多说了,自己体会吧 | | |
|
|
|
|
[第33楼] [ 回复时间:2010-07-17 18:31 ] | |
荣誉值:0
信誉值:2
注册日期:2010-07-16 14:24 |
回复:[第1楼]
------------------
楼主挺好的,很清新。
发一下我的吧,应该是对的,刚刚做完
assume cs:codesg,ds:data
data segment
; 0
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
; 84
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
; 168
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
data ends
table segment
db 21 dup ('year summ me ?? ') ;0,5,10,13 year,sar,people,average
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
s0: mov ax,ds:[si]
mov es:[bx],ax
mov ax,ds:[si+2]
mov es:[bx+2],ax ;年份
;总收入
mov ax,ds:[si+84] ;地位
mov es:[bx+5],ax
mov dx,ds:[si+2+84];高位
mov es:[bx+5+2],dx
div word ptr ds:[168+di] ;做除法
mov es:[bx+13],ax ;人均
mov ax,ds:[168+di]
mov es:[bx+10],ax ;雇员
add si,4 ;双字
add di,2 ;单字
add bx,16
loop s0
mov ax,4c00H
int 21H
codesg ends
end start
调试显示的信息:
-d es:0 14f
1479:0000 31 39 37 35 20 10 00 00-00 20 03 00 20 05 00 20 1975 .... .. ..
1479:0010 31 39 37 36 20 16 00 00-00 20 07 00 20 03 00 20 1976 .... .. ..
1479:0020 31 39 37 37 20 7E 01 00-00 20 09 00 20 2A 00 20 1977 ~... .. *.
1479:0030 31 39 37 38 20 4C 05 00-00 20 0D 00 20 68 00 20 1978 L... .. h.
1479:0040 31 39 37 39 20 56 09 00-00 20 1C 00 20 55 00 20 1979 V... .. U.
1479:0050 31 39 38 30 20 40 1F 00-00 20 26 00 20 D2 00 20 1980 @... &. ..
1479:0060 31 39 38 31 20 80 3E 00-00 20 82 00 20 7B 00 20 1981 .>.. .. {.
1479:0070 31 39 38 32 20 A6 5F 00-00 20 DC 00 20 6F 00 20 1982 ._.. .. o.
1479:0080 31 39 38 33 20 91 C3 00-00 20 DC 01 20 69 00 20 1983 .... .. i.
1479:0090 31 39 38 34 20 C7 7C 01-00 20 0A 03 20 7D 00 20 1984 .|.. .. }.
1479:00A0 31 39 38 35 20 81 24 02-00 20 E9 03 20 8C 00 20 1985 .$.. .. ..
1479:00B0 31 39 38 36 20 8A 03 03-00 20 A2 05 20 88 00 20 1986 .... .. ..
1479:00C0 31 39 38 37 20 7C 47 05-00 20 D2 08 20 99 00 20 1987 |G.. .. ..
1479:00D0 31 39 38 38 20 EB 03 09-00 20 E9 0A 20 D3 00 20 1988 .... .. ..
1479:00E0 31 39 38 39 20 CA 42 0C-00 20 C5 0F 20 C7 00 20 1989 .B.. .. ..
1479:00F0 31 39 39 30 20 18 0D 12-00 20 03 16 20 D1 00 20 1990 .... .. ..
1479:0100 31 39 39 31 20 38 1F 1C-00 20 22 20 20 E0 00 20 1991 8... " ..
1479:0110 31 39 39 32 20 58 19 2A-00 20 16 2D 20 EF 00 20 1992 X.*. .- ..
1479:0120 31 39 39 33 20 28 44 39-00 20 5E 38 20 04 01 20 1993 (D9. ^8 ..
1479:0130 31 39 39 34 20 28 F0 46-00 20 99 3B 20 30 01 20 1994 (.F. .; 0.
1479:0140 31 39 39 35 20 68 97 5A-00 20 88 45 20 4D 01 20 1995 h.Z. .E M. | | |
|