汇编语言十六进制转换成ASCII

作者&投稿:苑芝 (若有异议请与网页底部的电邮联系)
用汇编怎么将16进制转ASCII码?~

比如说1aH
转换成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
mov ah,02h
int 21h
汇编大多是指汇编语言,汇编程序。把汇编语言翻译成机器语言的过程称为汇编。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。于是汇编语言亦称为符号语言。用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理的系统软件。

这里要分清楚,你ascii码 是10进制的数字序列 还是 16进制的数字序列?
如果是16进制的数字序列,只需要每一位减30h或37h得到对应的16进制数位,再通过左移4位 与转换下一位相或即可。如此循环。
如果是10进制的数字序列,则需要每一位减30h得到对应的10进制数位,通过乘10再相加转换的下一位即可。如此循环。

       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的最高位为0
              ADD       BX, BX      ;  bx=bx*2 也就是左移1位
              JNC       DISP        ;  进位标志不置位时(即bx的最高位为0时)转disp
              INC       DL          ;  进位标志置位时(即bx的最高位为1时)加1
                                    ;  也就是变为 '1'  
       DISP:
              INT       21H
              LOOP      AGAIN
    
              MOV       AH, 4CH     ;程序结束
              INT       21H
       CODES  ENDS
              END       START


十六进制转换成 ASCII 汇编语言子程序,如下:

   ADD AL,90H

   DAA

   ADC AL,40H

   DAA

   RET

END

下面是把十六进制转换成ASCII,显示10个两位十六进制数的完整程序。




16进制代码对照表
9进行记数。对于任何一个数,我们可以用不同的进位制来表示。比如十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。以上内容参考:百度百科—十六进制转换 ...

十六进制与八进制之间如何转换?
第一种:之间的转换可以先转成二进制然后再相互转换。第二种:之间的转换可以先转成十进制然后再相互转换。例如一个十六进制数053977,将其转换成二进制001 010 011 100 101 110 111,再将该二进制转换为八进制,可得八进制数为1234567。十六进制为更常用的编程语言 因为两个十六进制数字完全指定一个...

十六进制数如何转换为十进制数?
1、理解十六进制数:十六进制数由0-9和A-F组成,其中A-F代表10-15。2、转换成十进制:将十六进制数中的每一位分别乘以16的n次方,其中n是其所在位置的序号,从右往左数。然后将所有的结果相加,得到的就是这个十六进制数的十进制表示。二、十六进制的定义 十六进制(简写为hex或下标16)是一种...

十六进制数转换为二进制数的步骤是什么?
例如:3A7.B1H=1110100111.10110001B。二进制转换成十六进制的方法是,取四合一法,即从二进制的小数点为分界点,向左(或向右)每四位取成一组。组分好以后,对照二进制与十六进制数的对应关系,将四位二进制按权相加,得到的数就是一位十六进制数,然后按顺序排列,小数点的位置不变,最后得到的...

汇编语言编写一个程序,实现十进制、十六进制和二进制之间的转换
10 CALL DSPAXX CALL LFCR MOV BX,16 CALL DSPAXX CALL LFCR MOV BX,2 CALL DSPAXX MOV AH,4CH INT 21H;=== INPUT

C语言 写一个函数 输入一个十六进制数 输出相应的十进制
case'F':num[j++]=15;break;default:num[j++]=(int)(arr-'0');break;} } for(i=n-1;i>=0;i--)sum+=num*pow(16,n-1-i);printf("转换结果:\\n%d",sum);} int main(){ char arr[10];printf("请输入十六进制数:\\n");gets(arr);conver(arr);return 0;} ...

c语言编程 把十进制转换为十六进制
方法一:#include<iostream>#include <string>using namespace std;string DecIntToHexStr(long long num){string str;long long Temp = num \/ 16;int left = num % 16;if (Temp > 0)str += DecIntToHexStr(Temp);if (left < 10)str += (left + '0');elsestr += ('A' + left -...

C语言中,八进制怎样转换成十六进制?
\/\/合法的八进制数 int a = 015; \/\/换算成十进制为 13 int b = -0101; \/\/换算成十进制为 -65 int c = 0177777; \/\/换算成十进制为 65535 \/\/非法的八进制 int m = 256; \/\/无前缀 0,相当于十进制 int n = 03A2; \/\/A不是有效的八进制数字 2.十六进制 十六进制由数字 0...

c语言 十进制转换为十六进制?
在C语言中,可以使用`printf()`函数的格式控制符将十进制数转换为十六进制。具体来说,可以使用 `%x` 格式控制符。例如:```c int decimal_number = 255;printf("%x", decimal_number);```上述代码将十进制数255转换为十六进制形式,并输出结果ff。需要注意的是,在使用 `%x` 格式控制符时,...

十进制数和十六进制数怎么转换?
十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方……所以,在第N(N从0开始)位上,如果是是数 X (X 大于等于0,并且X小于等于 15,即:F)表示的大小为 X * 16的N次方。例如十六进数 2AF5, 转化成10进制的步骤:用竖式计算:2AF5换算成10进制...

晋宁县15180368669: 汇编语言 十六进制转换为ASCII码 -
暨牵佳乐: 请关注最后的注意点 子程序如下: TRANSLATE:;假设之前已经有LEA SI,BUF;和LEA DI,MAS PUSHA TRANS: MOV DX,2 LODSB MOV AH,AL MOV CL,4 SHR AH,CL CMP AH,0AH JB SAH ADD AH,07H SAH: ADD AH,30H CHL AH,CL ...

晋宁县15180368669: 用汇编怎么将16进制转ASCII码 -
暨牵佳乐: 比如说1aH 转换成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: ...

晋宁县15180368669: 将16进制数转化为ASCII码,用汇编语言,最好用上堆栈
暨牵佳乐: 假设AL为16进制数要变为ASCII码 push al and al,f0H shr al,4 add al,30 mao bh,al pop al and al,0fh add al,30 mov bl,al 这样BX就是AL数字所对应的两位ASCII码

晋宁县15180368669: 汇编语言:编两个通用过程完成十六进制数转换成ASCII码并将ASCII码字符显示(哪位高人给点指导,鞠躬~)
暨牵佳乐: CsnCharToData Proc lpszChar:DWORD,lpBuff:DOWRD,sizechar:DWORD pushad mov edi,lpBuff mov esi,lpszChar mov ecx,sizechar _CsnCTD: xor eax,eax mov al,Byte ptr [esi] shl ax,4 shr al,4 _CsnTow: cmp al,9h ja _d9 add al,30h jmp _end _d9: ...

晋宁县15180368669: 怎么用汇编语言把字符转化成ascii -
暨牵佳乐: code segment assume cs:code org 100h start: push cs pop ds push cs pop es mov ah,1 int 21h push ax mov ah,2 mov dl,13 int 21h mov dl,10 int 21h pop ax call dispnum mov ah,4ch int 21h dispnum proc near push ax push bx push cx push dx push ...

晋宁县15180368669: 汇编语言 编写一个程序,将AL寄存器中的一位十六进制数转化成ASCII码 显示输出 -
暨牵佳乐: ;将AL寄存器中的一位十六进制数转化成ASCII码,显示输出. ;推荐答案,写的并非是一位.;程序如下:ASSUME CS:CODE CODE SEGMENT START:MOV AL, 0FH ;在这里可写 00H~0FH,这就是一位16进制数AND AL, 0FH ;无...

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

晋宁县15180368669: 用汇编语言,将一个数字的ASCII码值显示出来 -
暨牵佳乐: 想把06h的ASII码36H显示出来,... ------------------- 06h的ASCII码,不是36H. '6' ,才是 6 的 ASCII 码,这才是 36H. 你把:mov al,06H ; 改成:mov al,'6' ; 试试看.

晋宁县15180368669: 怎么用汇编程序将十六进制数转换成二进制数 -
暨牵佳乐: DATAS SEGMENT MESSAGE DB 'Welcome to the system!',13,10,13,10 DB 'The function of the program is changing H(16) numbers to B(2) numbers.',13,10,'Such as ff,AA,28,and so on.',13,10,13,10 DB 'Please enter the number.',13,10,13,10,'$' ...

晋宁县15180368669: 用汇编语言编写源程序:用查表方法,将一位十六进制数转换成其ASCII码,并储存. -
暨牵佳乐: 建表太麻烦了,我就把中间用到的关键指令给楼主吧(注:我用的是nasm) mov al,[十六进制值] mov bx,表首地址 xlat 这三步即可使得al中的结果为对应十六进制数的ASCII码了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网