+ -
当前位置:首页 → 问答吧 → 求解一段汇编代码

求解一段汇编代码

时间:2010-11-16

来源:互联网

以下是一段代码:按5位十进制的形式显示寄存器BX中的内容,如果BX值小于0,则应在显示数值之前显示‘-’。算法采用除10取余数的方法,从低位向高位求出十进制数
其中有很多地方看不懂:1:PLUS段中的MOV SI,OFFSET(bDisp+4)语句是什么意思?AGAIN段中的ADD DL,30H语句为什么要把30H加给DL,然后执行MOV [SI],DL DEC SI两个语句,我不明白这两句的意思..NEG BX语句也不太明白。。我刚学汇编,有好多不懂的,请高手帮我解释一下,谢谢了!!!!


  .MODEL SMALL
  .STACK 100H
  .CODE
DISPBX PROC
PUSH DS
PUSH DX
PUSH CX
PUSH AX
bDisp DB 5 DUP('0'),'$'
  MOV AX,SEG bDisp
  MOV DS,AX
  AND BX,BX
  JNS PLUS
  MOV DL,'-'
  MOV AH,2
  INT 21H
  NEG BX
PLUS: MOV SI,OFFSET(bDisp+4)
  MOV AX,BX
  MOV CX,10
AGAIN: XOR DX,DX
  IDIV CX
  ADD DL,30H
  MOV [SI],DL
  DEC SI
  AND AX,AX
  JNE AGAIN
  MOV DX,OFFSET bDisp
  MOV AH,9
  INT 21H
  POP AX
  POP CX
  POP DX
  POP DS
  RET
DISPBX ENDP
START: MOV BX,8000H
  CALL DISPBX
  .EXIT 0
  END START

作者: a173988844   发布时间: 2010-11-16

这都是一些基本的指令呀

作者: masmaster   发布时间: 2010-11-16

bDisp DB 5 DUP('0'),'$'

是用来存储用于输出结果的

MOV SI,OFFSET(bDisp+4)
把这个地址存于si,以便存储要输出的结果

ADD DL,30H
是将数值转成对应的ASCII,用于输出

作者: Purpleendurer   发布时间: 2010-11-16

热门下载

更多