主题:关于寄存器的使用,望高手明示!
jisg_57
[专家分:0] 发布于 2007-11-30 13:02:00
刚刚开始学汇编,有很多地方都不明白,望高手指教!
1.寄存器疑惑
如有: mov ax,data
mov ds,ax
.........
mov ax,5
.............
之前ax中已经有内容了,再执行mov ax,5也可以,为什么?
2.自己弄了个小程序,从键盘上输入两个数并相加,调试了半天也不能通过,望告诉一些思路。
回复列表 (共3个回复)
沙发
ccpp [专家分:9360] 发布于 2007-11-30 16:25:00
之前ax中已经有内容了,再执行mov ax,5也可以,为什么?
因为之前的内容,在后面不在需要了,所以不用保存(在栈中)
板凳
def [专家分:3380] 发布于 2007-11-30 21:05:00
mov就是改写动作
3 楼
bringwrite [专家分:0] 发布于 2007-12-02 15:23:00
2.自己弄了个小程序,从键盘上输入两个数并相加,调试了半天也不能通过,望告诉一些思路。
相信你可以从下面程序中找到思路
DSEG SEGMENT
DATA DW 1020H,2040H,3060H,4080H,50A0H
DW 60C0H,70E0H,8000H,9020H,0A040H
AVG DW ?
NUM DW ?
DSEG ENDS
code segment
main proc far
assume cs:code,ds:DSEG
start:
push ds
sub ax,ax
push ax
mov ax,dseg
mov ds,ax
mov si,0
mov cx,0
mov bx,0
mov di,10
next1:
mov ax,DATA[si]
Cwd
add bx,ax
adc cx,dx
ADD si,2
sub di,1
jnz next1
mov ax,bx
mov dx,cx
mov bx,10
IDIV bx
mov AVG,ax
mov si,0
mov di,10
mov cx,0
next2:
cmp DATA[si] ,ax
JGE big
add cx,1
add si,2
sub di,1
jnz next2
jz s
big:
add si,2
sub di,1
jnz next2
s:
mov bx,cx
mov num,cx
ret
main endp
code ends
end start
我来回复