用8086汇编语言编写 把16进制数转化为ASCII码

如题所述

code  segment
      assume cs:code
      org 100h
start:
      jmp bbb
num   dw 0FF78h
array db 10,13,4 dup(?),10,13,'$'

bbb:
      push cs
      pop ds
      push cs
      pop es
      
      ;以下是通过移位取出各位16进制数并放入数组array中
      lea di,array
      add di,5
      mov cx,4
      mov ax,word ptr[num]
again1:
      push cx
      push ax
      and ax,0fh
      mov byte ptr[di],al
      pop ax
      mov cl,4
      ror ax,cl
      dec di
      pop cx
      loop again1

      ;以下是将array数组中的16进制数转为ASCii码
      lea si,array
      add si,2
      mov cx,4
again2:
      cmp byte ptr[si],9
      jg next1
      add byte ptr[si],30h
      jmp next2
next1:
      add byte ptr[si],37H
next2:
      inc si
      loop again2

      ;以下调用dos功能显示array
      lea dx,array
      mov ah,9
      int 21h
      int 20h
code  ends
      end start

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-01
如是一个字节,分两步:
1、先将该字节循环左移四位,留低四位并加30H,然后判断该值是否大于39h,如是,则再加07H输出;否则直接输出。
2、再将原低四位做同样处理输出。本回答被网友采纳
第2个回答  2011-12-24
;
MOV DL, x
CMP DL, 10
JB A30
ADD DL, 7
A30:
ADD DL, '0'
MOV y, DL

END
相似回答