|
主题 : : 我写了一天,可不知道对不对,debug倒是通过了,结果也正确,就是代码多点,求人帮忙看下 [待解决] |
回复[ 2次 ]
点击[ 421次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-07-18 22:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-07-02 05:46 |
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,10H
MOV AX,TABLE
MOV ES,AX
MOV BX,0
MOV DX,0
MOV DI,0
MOV SI,0
MOV BP,0
MOV CX,21
S0: PUSH CX
MOV BP,0
PUSH DS:[DI+0ACH]
POP ES:[BP+0AH+SI]
ADD DI,2
MOV CX,2
S: MOV AX,DS:[BX]
MOV ES:[BP+0+SI],AX
MOV AX,DS:[BX+54H]
MOV ES:[BP+5H+SI],AX
ADD BP,2
ADD BX,2
LOOP S
MOV DX,ES:[7H+SI]
MOV AX,ES:[5H+SI]
DIV WORD PTR ES:[0AH+SI]
MOV ES:[0DH+SI],AX
ADD SI,10H
POP CX
LOOP S0
MOV AX,4C00H
INT 21H | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-07-19 05:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:2
注册日期:2010-07-02 05:46 |
START: MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,10H
MOV AX,TABLE
MOV ES,AX
MOV BX,0
MOV DX,0
MOV DI,0
MOV SI,0
MOV BP,0 :以上是各寄存器初始化
MOV CX,21
S0: PUSH CX
MOV BP,0
PUSH DS:[DI+0ACH]
POP ES:[BP+0AH+SI]
ADD DI,2 :复制收入----想了整10个小时,才想到换个寄存器
MOV CX,2
S: MOV AX,DS:[BX]
MOV ES:[BP+0+SI],AX
MOV AX,DS:[BX+54H]
MOV ES:[BP+5H+SI],AX
ADD BP,2
ADD BX,2
LOOP S :S循环,复制年份----费了半天功夫才想到多用个段寄存器
MOV DX,ES:[7H+SI]
MOV AX,ES:[5H+SI]
DIV WORD PTR ES:[0AH+SI]
MOV ES:[0DH+SI],AX :16位除数,计算平均数----这个倒简单,10分钟搞定。
ADD SI,10H
POP CX
LOOP S0
MOV AX,4C00H
INT 21H
------------------
回复:
其实在写数据段时,就迷糊了好外,不知道三段数据应该怎么放,开始时以为一段字符,一段双字,一段字,是需要做成三个段的.............那样的话,寄存器说什么也不够用。
后来也放一个段里了,可是编译时出现“warning A4101: Missing data; zero assumed”错误。现在写成的也存在这个警告,但倒是能编译,结果也还正确。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-10-06 16:30 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-09-16 18:13 |
没必要那么多哟,年份是字节型,你可以看成是一个二维数组啦,收入是双字型,你也可以看成是一个二维数组啦。
所以两个可以同时循环复至。 | | |
|