回 帖 发 新 帖 刷新版面

主题:关于寄存器的使用,望高手明示!

刚刚开始学汇编,有很多地方都不明白,望高手指教!

1.寄存器疑惑
     如有:  mov ax,data
             mov ds,ax
              .........
             mov ax,5
             .............
     之前ax中已经有内容了,再执行mov ax,5也可以,为什么?
2.自己弄了个小程序,从键盘上输入两个数并相加,调试了半天也不能通过,望告诉一些思路。

回复列表 (共3个回复)

沙发

之前ax中已经有内容了,再执行mov ax,5也可以,为什么?

因为之前的内容,在后面不在需要了,所以不用保存(在栈中)

板凳

mov就是改写动作

3 楼


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

我来回复

您尚未登录,请登录后再回复。点此登录或注册