汇编语言怎样实现ASCII码转换为二进制数这是前一段时间碰到的一个难题,由于初学微机原理,对汇编一块相当头大,还请各位大虾多多指教. 先谢了
来源:学生作业帮助网 编辑:作业帮 时间:2024/10/07 03:05:25
汇编语言怎样实现ASCII码转换为二进制数这是前一段时间碰到的一个难题,由于初学微机原理,对汇编一块相当头大,还请各位大虾多多指教. 先谢了
汇编语言怎样实现ASCII码转换为二进制数
这是前一段时间碰到的一个难题,由于初学微机原理,对汇编一块相当头大,还请各位大虾多多指教.
先谢了
汇编语言怎样实现ASCII码转换为二进制数这是前一段时间碰到的一个难题,由于初学微机原理,对汇编一块相当头大,还请各位大虾多多指教. 先谢了
题目:将两个二进制数转换为二进制数码的ASCII码.
调用程序与子程序之间的任务分工是:调用程序提供待转换的数据,数据位数(8位,16位)和转换后存放ASCII码的首址等三个参量的地址,子程序完成二进制数的ASCII码转换.
-----------------------------------------------------------
DATA SEGMENT
BIN1 DB 35H
BIN2 DW 0AB48H
NUM DB 8,16
ASCBUF DB 20H DUP(0)
TABLE DW 3 DUP(0)
DATA ENDS
.
COSEG SEGMENT
...
MOV TABLE,OFFSET BIN1
MOV TABLE+2,OFFSET NUM
MOV TABLE+4,OFFSET ASCBUF
MOV BX,OFFSET TABLE
CALL BINASC8
...
MOV TABLE,OFFSET BIN2
MOV TABLE+2,OFFSET NUM+1
MOV TABLE+4,OFFSET ASCBUF+10H
MOV BX,OFFSET TABLE
CALL BINASC16
--------------------------------------------------------------
--------------------------------------------------------------
子程序如下:
BINASC PROC
BINASC8:MOV DI,[BX]
MOV DH,[DI]
JMP TRAN
BINASC16:MOV DI,[BX]
MOV DX,[DI]
TRAN:MOV DI,[BX+2]
MOV CL,[DI]
XOR CH,CH
MOV DI,[BX+4]
LOP:ROL DX,1
MOV AL,DL
AND AL,01H
ADD AL,30H
MOV [DI],AL
INC DI
LOOP LOP
RET
BINASC ENDP
--------------------------------------------------------------
程序是这个
好久不用汇编了,你是说把0~F这16个字母转化为对应的二进制数么?
思路是,如果这个数减掉30H的话,还大于9,就说明是A~F,需要再减7才对,否则就不用减了。
我在网上找了个程序,是这个意思
ASCBCD: PUSH PSW;保护现场
PUSH B
CLR C;清Cy
SUBB A,#30H;ASCII码减30H
MOV B,A;结...
全部展开
好久不用汇编了,你是说把0~F这16个字母转化为对应的二进制数么?
思路是,如果这个数减掉30H的话,还大于9,就说明是A~F,需要再减7才对,否则就不用减了。
我在网上找了个程序,是这个意思
ASCBCD: PUSH PSW;保护现场
PUSH B
CLR C;清Cy
SUBB A,#30H;ASCII码减30H
MOV B,A;结果暂存B中
SUBB A,#0AH;结果减10
JC SB10;如果Cy=1,表示该值≤9
XCH A,B;否则该值>9,必须再减7
SUBB A,#07H
SJMP FINISH
SB10: MOV A,B
FINISH: POP B;恢复现场
POP PSW
RET
收起