汇编语言——将BX中的无符号数和有符号数以二进制、八进制、十六进制、十进制形式输出

devtools/2024/9/22 7:35:56/

文章目录

    • 将BX中的无符号数以二进制形式输出
    • 将BX中的无符号数以八进制形式输出
    • 将BX中的无符号数以十六进制形式输出
    • 将BX中的无符号数以十进制形式输出
    • 将BX中的有符号数以十进制形式输出

将BX中的无符号数以二进制形式输出

利用移位指令会影响CF,默认dl=30h(数字0),用adc dl,0加上CF的值,直接用2号功能输出。

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,-458		;1111 1110 0011 0110mov cx,16		;bx16位,循环16次
L1:	rol bx,1		;左边的先显示,循环左移mov dl,30h		;默认dl显示0adc dl,0		;带进位加法mov ah,2int 21hloop L1mov ah,4chint 21h
main endp
code endsend main

将BX中的无符号数以八进制形式输出

在这里插入图片描述
二进制转换成八进制:

从低到高,3位二进制转换成1位八进制

bx为16位,能转换成6位8进制:最高位0/1+5位8进制。

还是利用移位指令ROL,先把最高位移出,直接输出;

循环5次,每次ROL3位,把bx的最高3位移到最低3位,取出bl,屏蔽bl的高5位,显示输出。

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,-958		;1111 1100 0100 0010(二进制)/176102(八进制)rol bx,1		;第一位直接输出		mov dl,30h		;默认为数字0adc dl,0mov ah,2int 21hmov cx,5		;还有5位八进制数
L1:push cx			;因为bx要循环左移3次,要用到cl,保护cx进栈mov cl,3		;bx循环左移3次rol bx,clmov dl,bl		;把bx的低8位放到dland dl,7		;屏蔽高5位add dl,30h		;转换成数字mov ah,2		;显示输出int 21hpop cx			;还原cx,继续循环loop L1mov ah,4chint 21h
main endp
code endsend main

将BX中的无符号数以十六进制形式输出

跟八进制同理,十六进制输出要注意:0-9和A-F的输出

显示0-9,在原来的基础上+30H

10/0AH,要输出A/41H/65 ———— 二者相差65-10=55=37H
显示A-F,在原来的基础上+37H

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,-6908		;1110 0101 0000 0100(二进制)/E504(十六进制)mov cx,4
L1:push cxmov cl,4rol bx,clmov dl,bland dl,0fh			;屏蔽高4位cmp dl,9ja L2add dl,30h			;输出0-9jmp printL2:add dl,37h			;输出A-Fjmp printprint:mov ah,2int 21hpop cxloop L1mov ah,4chint 21h
main endp
code endsend main

将BX中的无符号数以十进制形式输出

核心思想:循环(BX)除以10,余数进栈,倒序输出

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,65535	;无符号数bx最大为65535mov cx,0		;统计余数的个数mov si,10		;想要用(dx,ax)除以10,得先把10放进16位的寄存器simov ax,bx		;被除数(dx,ax)mov dx,0
L1:div sipush dx			;把余数进栈inc cx			;余数的个数+1cmp ax,0		;判断商是否为0,0退出,否则继续除10je L2mov dx,0		;商在ax,余数在dx,下一次的被除数(dx,ax)要把dx清零jmp L1L2:pop dx			;因为每一次的余数为0-9,只存放在dl,直接pop dx,再用2号功能显示输出add dl,30h		;转换成数字字符mov ah,2int 21hloop L2mov ah,4chint 21hmain endp
code endsend main

将BX中的有符号数以十进制形式输出

在这里插入图片描述

data segment
data ends
stack segment stackdw 100 dup (?)top label word
stack ends
code segmentassume cs:code,ds:data,ss:stack
main proc farmov ax,datamov ds,axmov ax,stackmov ss,axlea sp,topmov bx,-32768mov cx,0mov si,10mov ax,bxmov dx,0add ax,0jns L2		;符号位为0neg ax		;符号位为1,求补
L1:div sipush dxinc cxcmp ax,0je exit1mov dx,0jmp L1L2:div sipush dxinc cxcmp ax,0je exit2mov dx,0jmp L2exit1:mov dl,'-'mov ah,2int 21hexit2:	pop dxadd dl,30hmov ah,2int 21hloop exit2mov ah,4chint 21h
main endp
code endsend main

http://www.ppmy.cn/devtools/4114.html

相关文章

牛客周赛 Round 39(补题)

小红不想做完全背包 (hard) 题目描述 本题和easy版本的唯一区别是:ppp没有必须等于3的限制。 完全背包是一个经典问题,但小红完全不会完全背包,因此她不想做完全背包。 现在小红拿到了一个长的很像完全背包的题&…

Freertos学习第二天-Freertos基于ESP32-给任务传递单个参数

一共有两种方法 第一种: 在创建任务中可以传递参数,void *pt 传递了一个空指针 void Task1(void *pt) 可以运用这个空指针来设置引脚 byte * pbLED1PIN;pbLEDPIN &LED1_PIN;void * pvLED1PIN;pvLED1PIN (void *)pbLED1PIN; 以上代码意思是 byte * pbLE…

计算机网络——GBN协议实现

实验目的 编程模拟实现GBN可靠传输软件 实验内容 C 程序模拟实现Go-Back-N可靠数据传输,需要编写一个发送端程序和一个测试端程序来模拟传输过程 具体流程 1. 编写发送端程序,调用库实现socket连接,然后主要实现滑动窗口,接收…

神经网络压缩图像

简介 典型的压缩管道由四个组件组成: 编码:输入图像 x x x通过编码器函数 ε \varepsilon ε,将其转换为潜在表示 z z z。 量化:截断 z z z以丢弃一些不重要的信息 熵编码:使用某种形式的熵编码(例如&…

Tomcat下载配置地址

IntelliJ IDEA是一个强大的集成开发环境,能够大大简化Java应用程序的开发和部署过程。而Tomcat作为一个流行的Java Web服务器,其与IntelliJ IDEA的整合能够提供便捷的开发环境,让开发人员更专注于代码的创作与优化。 在配置IntelliJ IDEA以使…

docker最新版安装

docker安装 检查系统版本即卸载旧docker安装docker依赖工具及底层依赖、仓库源安装dockerdocker阿里云镜像资源站参考 检查系统版本即卸载旧docker # 查看操作系统的发行版号 uname -r# 查看系统版本 cat /etc/redhat-release# 卸载旧版本docker(如已安装过) yum remove docke…

Jackson 2.x 系列【25】Spring Boot 集成之起步依赖、自动配置

有道无术,术尚可求,有术无道,止于术。 本系列Jackson 版本 2.17.0 本系列Spring Boot 版本 3.2.4 源码地址:https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. 起步依赖3. 自动配置3.1 JacksonPrope…

力扣:141. 环形链表

力扣:141. 环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾…