data segment
bcd1 db 12h ;压缩的bcd code
asc1 db 0,0 ;转换后的ascii code
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
mov al,bcd1 ;(al)=12
and al,0f0h ;(al)=10
mov cl,4
shr al,cl ;(al)=01
add al,30h ;(al)=31h
mov asc1[0],al
mov al,bcd1 ;(al)=12
and al,0fh ;(al)=02
add al,30h ;(al)=32h
mov asc1[1],al
mov ah,4ch
int 21h
code ends
end start
HASC:MOV
A,R0
;从R0中取一个16进制(
二进制
)数(0-F)
ANL
A,#0FH
;屏蔽掉高4位
PUSH
ACC
;4位
二进制数
入栈
CLR
C
;清进(借)位位
SUBB
A,#0AH
POP
ACC
JC
LOOP
ADD
A,#07H
LOOP:ADD
A,#30H
MOV
R2,A
RET
实验结果:R0中的
十六进制数
(比如A),转换为ASCII码(41H)送入R2中。
任务代码为:
#include<stdioh>
main()
{
char w;
printf("请输入一个字母:");
scanf("%c",&w);
printf("与这个字母对应的ASCII码是:%d\n",w);
}
英文字母是字符型,ASCII码十进制的,因此只需要将字符型转换为十进制,在输出函数的时候强制转换类型。
扩展资料:
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;
ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。
奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。
参考资料:
举个例子,6CH,转换成ASCII码,是以十六进制形式显示:6CH,还是以十进制形式显示:108?
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:把AL中的二进制无符号数转换成显式的十进制ASCII
; 入口:AL=二进制数;di=转换后的ASCII保存地址
; 出口:无
HEXASC_Dec Proc Near
push si
push cx
push bx
push di
mov bl,10
xor cx,cx
lea di,@@Temp_Save[3]
cld
@@Divide: xor ah,ah
div bl
or ah,30h
mov [di],ah
dec di
inc cx
test al,0ffh
jnz @@Divide
push di
pop si
inc si
pop di
pop bx
rep movsb
pop cx
pop si
ret
@@Temp_Save db 4 dup()
HEXASC_Dec EndP
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
HEXASC_Hex Proc Near
push cx
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
pop cx
ret
HEXASC_Hex EndP
; -----------------------------------------
Translate db '0' ;转换方式(默认:十进制数显示;若要十六进制显示,则改为:1)
BUF db 23,35,46,57,68,79,81,98,119,243
Elements EQU ($-BUF)/Type BUF ;元素个数
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
cld
lea si,BUF
lea di,Temp_STr
mov cx,Elements
HEX_ASCII: lodsb
IF Translate == '0'
call HEXASC_Dec
ELSE
call HEXASC_Hex
stosw
mov al,'H'
stosb
ENDIF
mov al,','
stosb
loop HEX_ASCII
dec di
mov al,'$'
stosb
Output Temp_STr
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Temp_STr:
Code ENDS
END Start ;编译到此结束
; -----------------------------------------
ADD AL,90H
DAA
ADD AL,40H
DAA
十进制数加调整指令DAA(Decimal Adjust After Addition)
该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。
其调整规则如下:
如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;
如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;
、如果以上两点都不成立,则,清除标志位AF和CF。
经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。
ASCII码转十进制即按二进制转十进制方法,按权展开求和。
例:0110110b转十进制=02^6+12^5+12^4+02^3+12^2+12^1+02^0=542)十进制整数转二进制数:“除以2取余,逆序排列”(除二取余法)
ASCII(AmericanStandardCodeforInformationInterchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统。
Asc 函数
返回一个 Integer,代表字符串中首字母的字符代码。
语法
Asc(string)
必要的 string 参数可以是任何有效的字符串表达式。如果 string 中没有包含任何字符,则会产生运行时错误。
说明
在非 DBCS 系统下,返回值范围为 0 – 255 。在 DBCS
系统下,则为 -32768 – 32767。
注意 AscB
函数作用于包含在字符串中的字节数据,AscB 返回第一个字节的字符代码,而非字符的字符代码。AscW 函数返回 Unicode 字符代码,若平台不支持 Unicode,则与 Asc
函数功能相同。
Asc 函数示例
本示例使用 Asc 函数返回字符串首字母的字符值(ASCII 值)。
Dim MyNumberMyNumber = Asc("A") ' 返回 65。
MyNumber = Asc("a") ' 返回 97。
MyNumber = Asc("要") ' 返回 -11606
以上就是关于编写程序,实现将一个两位的BCD码转换成ASCII码,例如(12)BCD转换成31H和32H.全部的内容,包括:编写程序,实现将一个两位的BCD码转换成ASCII码,例如(12)BCD转换成31H和32H.、给出一个十六进制数,将其转换成ASCII码值的单片机程序及其实验结果、ASCII码是怎么转化为十进制的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)