回 帖 发 新 帖 刷新版面

主题:急求一道汇编程序题源程序!!!!进制转换问题

从键盘输入一个补码(1-4位十六进制数),从显示器上以十进制的形式显示其真值  
 例如:输入:FFFF;输出:=-1   输入:80;输出:=128
    输入:E;   输出:=14   输入:FF;输出:=255
求汇编源代码
考试题!!!!!
求高手解答!!!!

回复列表 (共1个回复)

沙发


.model  small
.386
.stack
.data
  outstr db 5 dup(0),'$'
.code
.startup
 mov bx,0
  mov cx,4
  input:
  mov ah,1
  int 21h
  .if  al>=41h && al<=46h
     sub al,7
  .elseif  al>=61H && al<=66h
     sub al,27h
  .elseif !(al>=30H && al<=39h)
     jmp endinput
  .endif
    shl bx,4
    and ax,0fh
    add bx,ax
  loop input
  endinput:
  MOV AH,2
  MOV DL,10
  INT 21H
  or bx,bx
  .if sign?
   mov dl,'-'
   mov ah,2
   int 21h
   neg bx
  .endif
  mov ax,bx
  mov cx,10
  mov bx,5
  .repeat
  mov dx,0
  div cx
  and dx,0fh
  add dl,30h
  dec bx
  mov outstr[bx],dl
  .until bx==0

  mov dx,offset outstr
  mov ah,9
  int 21h
 .exit 0
end

输入:FFFF;输出:=-0001   输入:80;输出:=00128
输入:E;   输出:=00014   输入:FF;输出:=00255

我来回复

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