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

\u5927\u5b66\u6c47\u7f16\u8bed\u8a00\u7a0b\u5e8f\u8bbe\u8ba1\u9898 \u7528\u6c47\u7f16\u8bed\u8a00\u7f16\u5199\u628aASCII\u8f6c\u5316\u4e3a\u5341\u516d\u8fdb\u5236\u7684\u7a0b\u5e8f

\u8fd9\u91cc\u8981\u5206\u6e05\u695a\uff0c\u4f60ascii\u7801 \u662f10\u8fdb\u5236\u7684\u6570\u5b57\u5e8f\u5217 \u8fd8\u662f 16\u8fdb\u5236\u7684\u6570\u5b57\u5e8f\u5217\uff1f
\u5982\u679c\u662f16\u8fdb\u5236\u7684\u6570\u5b57\u5e8f\u5217\uff0c\u53ea\u9700\u8981\u6bcf\u4e00\u4f4d\u51cf30h\u621637h\u5f97\u5230\u5bf9\u5e94\u768416\u8fdb\u5236\u6570\u4f4d\uff0c\u518d\u901a\u8fc7\u5de6\u79fb4\u4f4d \u4e0e\u8f6c\u6362\u4e0b\u4e00\u4f4d\u76f8\u6216\u5373\u53ef\u3002\u5982\u6b64\u5faa\u73af\u3002
\u5982\u679c\u662f10\u8fdb\u5236\u7684\u6570\u5b57\u5e8f\u5217\uff0c\u5219\u9700\u8981\u6bcf\u4e00\u4f4d\u51cf30h\u5f97\u5230\u5bf9\u5e94\u768410\u8fdb\u5236\u6570\u4f4d\uff0c\u901a\u8fc7\u4e5810\u518d\u76f8\u52a0\u8f6c\u6362\u7684\u4e0b\u4e00\u4f4d\u5373\u53ef\u3002\u5982\u6b64\u5faa\u73af\u3002

\u6bd4\u5982\u8bf41aH
\u8f6c\u6362\u6210ASCII\u5c31\u662f31h,41h
\u8ba1\u7b97\u8fc7\u7a0b\u5c31\u662f\u5f53<A\u65f6\uff0c+30h,\u5426\u5219\u52a037h
mov mem,1ah
mov al,mem
and al,0f0h
shr al,4
cmp al,a
jb xx
add al,7h
xx:
add al,30h
mov dl,al
mov ah,02h
int 21h
mov al,mem
and al,0fh
cmp al,a
jb xxx
add al,7h
xxx:
add al,30h
mov dl,al
mov ah,02h
int 21h
\u6c47\u7f16\u5927\u591a\u662f\u6307\u6c47\u7f16\u8bed\u8a00\uff0c\u6c47\u7f16\u7a0b\u5e8f\u3002\u628a\u6c47\u7f16\u8bed\u8a00\u7ffb\u8bd1\u6210\u673a\u5668\u8bed\u8a00\u7684\u8fc7\u7a0b\u79f0\u4e3a\u6c47\u7f16\u3002\u5728\u6c47\u7f16\u8bed\u8a00\u4e2d\uff0c\u7528\u52a9\u8bb0\u7b26(Memoni)\u4ee3\u66ff\u64cd\u4f5c\u7801\uff0c\u7528\u5730\u5740\u7b26\u53f7(Symbol)\u6216\u6807\u53f7(Label)\u4ee3\u66ff\u5730\u5740\u7801\u3002\u8fd9\u6837\u7528\u7b26\u53f7\u4ee3\u66ff\u673a\u5668\u8bed\u8a00\u7684\u4e8c\u8fdb\u5236\u7801\uff0c\u5c31\u628a\u673a\u5668\u8bed\u8a00\u53d8\u6210\u4e86\u6c47\u7f16\u8bed\u8a00\u3002\u4e8e\u662f\u6c47\u7f16\u8bed\u8a00\u4ea6\u79f0\u4e3a\u7b26\u53f7\u8bed\u8a00\u3002\u7528\u6c47\u7f16\u8bed\u8a00\u7f16\u5199\u7684\u7a0b\u5e8f\uff0c\u673a\u5668\u4e0d\u80fd\u76f4\u63a5\u8bc6\u522b\uff0c\u8981\u7531\u4e00\u79cd\u7a0b\u5e8f\u5c06\u6c47\u7f16\u8bed\u8a00\u7ffb\u8bd1\u6210\u673a\u5668\u8bed\u8a00\uff0c\u8fd9\u79cd\u8d77\u7ffb\u8bd1\u4f5c\u7528\u7684\u7a0b\u5e8f\u53eb\u6c47\u7f16\u7a0b\u5e8f\uff0c\u6c47\u7f16\u7a0b\u5e8f\u662f\u7cfb\u7edf\u8f6f\u4ef6\u4e2d\u8bed\u8a00\u5904\u7406\u7684\u7cfb\u7edf\u8f6f\u4ef6\u3002

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、先将该字节循环左移四位,留低四位并加30H,然后判断该值是否大于39h,如是,则再加07H输出;否则直接输出。
2、再将原低四位做同样处理输出。

;
MOV DL, x
CMP DL, 10
JB A30
ADD DL, 7
A30:
ADD DL, '0'
MOV y, DL

END

扩展阅读:免费拍照答题一秒出答案 ... 初学编程必背50个 ... 汇编语言延时0.5s程序 ... 8086汇编编程实例大全 ... c语言代码生成器 ... 编程必背100个代码 ... c语言编程代码一览表 ... 8086简单汇编语言程序 ... 8086汇编语言程序设计答案 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网