微机原理——十进制数转十六进制

微机原理——十进制数转十六进制

实验环境依旧是
在这里插入图片描述 在这里插入图片描述

下面是我给出的代码,代码行数比较多但是很容易理解
小伙伴们可以尝试利用循环结构或者子程序,缩短代码行数

DATA SEGMENT
X DW 456          ; 测试数据
DATA ENDS
STACK SEGMENT PARA STACK 'STACK'
DW 512 DUP(?)
STACK ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:  MOV AX,DATA
        MOV DS,AX
        MOV BX,X
        AND BX,0F000H          ;保留前四位,注意0F000H不能写成F000H(此时也可利用右移取出前四位,有兴趣的小伙伴可以尝试着改一下)
        MOV CL,12
	SHR BX,CL
	MOV DL,BL
	CMP BX,0009H        ;与9作比较(小于等于9时,,输出为0~9,此时将数加上30H转化为字符后输出,大于9时则应输出A~F,此时需要加37H转化为字符后输出)
	JBE DIS
        ADD DL,0007H
        DIS:ADD DL,30H
	MOV AH,2
	INT 21H

	MOV BX,X
        AND BX,0F00H           ;保留高八位中的后四位
        MOV CL,8
	SHR BX,CL
	MOV DL,BL
	CMP BX,0009H
	JBE NEXT1
        ADD DL,0007H
        NEXT1:ADD DL,30H
	MOV AH,2
	INT 21H

        MOV BX,X
        AND BX,00F0H          ;保留低八位中的前四位
        MOV CL,4
	SHR BX,CL
	MOV DL,BL
	CMP BX,0009H
	JBE NEXT2
        ADD DL,0007H
        NEXT2:ADD DL,30H
	MOV AH,2
	INT 21H

        MOV BX,X
        AND BX,000FH                ;保留末尾四位
	MOV DL,BL
	CMP BX,0009H
	JBE LAST
        ADD DL,0007H
        LAST:ADD DL,30H
	MOV AH,2
	INT 21H

	MOV AH,2
	MOV DL,'H'         ;在末尾输出H,表示输出结果为16进制数
        INT 21H
	MOV AX,4C00H
	INT 21H
CODE ENDS
        END START

测试结果如下

在这里插入图片描述
希望对初学微机原理的小伙伴有帮助!

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值