huajuan_13 2023-05-17 22:24 采纳率: 0%
浏览 68

把BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。

如何用汇编语言实现将BX中的带符号二进制数转换成十进制数,在屏幕上显示出来。

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-05-17 22:26
    关注

    参考GPT和自己的思路:我们可以采用下面的方法将BX中的带符号二进制数转换成十进制数并显示在屏幕上:

    1. 首先需要确定BX中的符号,如果最高位为1,则表示该数是负数。如果是负数,需要先将BX取反加1,得到对应的正数。
    2. 将BX中的二进制数逐位转换成十进制数,并将每位的结果相加得到十进制数的值。
    3. 使用汇编中的INT 21H函数将十进制数转换成字符串并显示在屏幕上。

    以下是示例代码:

    MOV AX, BX ;将BX中的值移动到AX中
    CMP AH, 0 ;比较AX的高位是否为0
    JNS POSITIVE ;如果高位为0,表示为正数,跳转到POSITIVE标签
    NOT AX ;AX取反
    ADD AX, 1 ;加1得到正数
    NEG AX ;将AX变回负数
    JMP CONV_DEC ;跳转到CONV_DEC标签

    POSITIVE: ;如果为正数,直接跳转到CONV_DEC标签
    CONV_DEC:
    MOV CX, 0 ;用CX存储十进制数的位数
    MOV DX, 10 ;用DX作为除数
    MOV BX, 0 ;用BX存储十进制数的值
    DIV DX ;将AX除以DX,得到余数和商
    ADD BL, AH ;将余数加到BX中
    INC CX ;位数加1
    MOV AH, 0 ;将AX的高位清零
    CMP AL, 0 ;判断商是否为0
    JNE CONV_DEC ;如果不为0,继续除以10

    MOV AH, 02H ;使用INT 21H函数将十进制数转换成字符串并显示在屏幕上
    MOV DL, BL ;将BX的值移动到DL中
    ADD DL, 30H ;将DL转换成ASCII码
    INT 21H

    RET ;结束程序

    评论

报告相同问题?

问题事件

  • 创建了问题 5月17日

悬赏问题

  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)