用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

用8086汇编语言编写 把16进制数转化为ASCII码
cl dec di pop cx loop again1 ;以下是将array数组中的16进制数转为ASCii码 lea si,array add si,2 mov cx,4again2: cmp byte ptr[si],9 jg next1 add byte ptr[si

用汇编怎么将16进制转ASCII码?
1. 首先,我们需要了解16进制数`1aH`转换为ASCII码的过程。2. 在汇编语言中,大写字母`A`到`F`对应的ASCII码值分别是`31h`到`36h`,小写字母`a`到`f`对应的ASCII码值分别是`61h`到`66h`。3. 因此,16进制数`1aH`转换为ASCII码值是`31h`和`41h`。4. 具体的计算过程是:如果16进制...

用汇编怎么将16进制转ASCII码?
转换成ASCII就是31h,41h 计算过程就是当<A时,+30h,否则加37h 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 mo...

汇编语言 十六进制转换为ASCII码
BUF 子单元的的 每个字节的 16 进制数 加上 30h

汇编语言十六进制转换成ASCII
CODES SEGMENT ASSUME CS:CODES START: PUSH CS POP DS ;此处输入代码段代码 MOV BX, 8421H ;给定一个4位的16进制数 MOV AH, 2 ;向标准输出设备输出一个字符 MOV CX, 16 ;循环16次 AGAIN: MOV DL, '0' ; 假定当前bx...

...将AL寄存器中的一位十六进制数转化成ASCII码 显示输出
;将AL寄存器中的一位十六进制数转化成ASCII码,显示输出。;推荐答案,写的并非是一位。;程序如下:ASSUME CS:CODE CODE SEGMENT START:MOV AL, 0FH ;在这里可写 00H~0FH,这就是一位16进制数 AND AL, 0FH ;无用位清零,保留该数字 ;下面是变成ASCII码 CMP AL, 0AH JB NEXT ADD...

十六进制转换ASCII码汇编语言
HEX2ASC:PUSH ACC ANL A,#0FH LCALL CHANGE MOV B,A POP ACC SWAP A ANL A,#0FH LCALL CHANGE RET ;返回值A,B,A为高位,B为低位 CHANGE:CJNE A,#10,CHG1 CHG1:JC CHG2 SUBB A,#10 ADD A,#'A'RET CHG2:ADD A,#'0'RET ...

汇编语言中16进制转ascii码需要左移四位还是右移四位
从高位向低位的顺序转的话,用循环左移(ROL)。从低位向高位的顺序转的话,用循环右移(ROR)。

求汇编语言十六进制数转换成ASCII 码的原理
针对16进制的每一位:1、先假设均为0~9之间的数字,将其加 30h 变成 ascii码;2、与 3Ah 比较,小于(假设成立)则直接转下一位,否则(假设不成立修正)再加上 07 (即在‘A’~‘F’之内)后转下一位。

使用汇编把十六进制转换成相应的ASCII值是怎么个思路,用自然语言...
十六进制转ASCII值 把4位值跟10相比 小于加38 其它的加55 然后输出;转十进制 假设这个十六进制数在内存中,那么把这个数除以10分别输出就行了。

相似回答