汇编一日一学(13)--十六进制显示二进制

本文介绍了一个使用汇编语言实现的十六进制到二进制转换的程序。该程序通过键盘输入一个四位的十六进制数,并将其转换为对应的二进制数,在终端上显示出来。程序运用了移位操作、条件判断等技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此题算法描述:

十六进制转化为二进制就是每位展开:

1234H 展开: 0001 0010 0011 0100

1.BX: 0000 0000 0000 0000

2.输入一个合法数,转化为0000B~1001B 转换为:1010B~1111B

3.BX 合并

4.BX 左移四位

;从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数

DATASSEGMENT

STR DB 0DH,0AH,'$'

DATASENDS

CODESSEGMENT

MAINPROCFAR

ASSUMECS: CODES, DS: DATAS

START:

PUSHDS

SUBAX, AX

PUSHAX

MOVAX, DATAS

MOVDS, AX

;---------------------------------------------------------

MOV CH,4 ;四位的十六进制数

MOV CL,4 ;移位次数

MOV BX,0 ;存放16位二进制

INPUT:

SHLBX, CL ;左移四位

MOV AH,01H ;输入0~9,a~f,A~F的数

INT 21H

CMP AL,'0'

JB INPUT

CMP AL,'f'

JA INPUT

CMP AL,'9'

JBE NUM ;输入的数为0~9

CMP AL,'@'

JBE INPUT

CMP AL,'F'

JBE Convert1 ;输入的数为A~F

CMP AL,'a'

JB INPUT

CMP AL,'f'

JBE Convert2 ;输入的数为a~f

NUM:

AND AL,0FH ;0000B~1001B

JMP BINARY

Convert1:

AND AL,0FH

ADDAL, 9

JMP BINARY

Convert2:

SUB AL,20H ;小写转大写 在与操作

AND AL,0FH ;转换为:1010B~1111B

ADDAL, 9

JMP BINARY

BINARY:

ORBL, AL;将键盘输入的数进行组合

DECCH

JNZINPUT

DISPN:

MOVCX, 16;将16位二进制数一位位地转换成ASCII码显示

LEA DX,STR

MOV AH,09H

INT 21H

DISP:

MOVDL, 0

ROLBX, 1 ;注意这两条指令

RCLDL, 1

ORDL, 30H

MOVAH, 2;进行显示

INT21H

LOOPDISP

RET

MAINENDP

CODESENDS

END START

总结:

1.一种新的思想:即移位操作,BX16位分别存放4个十六进制的0000

2.AND AL,0FH ;转换为:1010B~1111B 0000B~1001B

记十六进制数字与操作转化为相应二进制

3.OR

4. ROLBX, 1 ;循环左移

RCLDL, 1 ;带进位循环左移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值