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

文章目录

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

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

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

data segment
data ends
stack segment stack
	dw 100 dup (?)
	top label word
stack ends
code segment
	assume cs:code,ds:data,ss:stack
main proc far
	mov ax,data
	mov ds,ax
	mov ax,stack
	mov ss,ax
	lea sp,top
	
	mov bx,-458		;1111 1110 0011 0110
	mov cx,16		;bx16位,循环16次
L1:	
	rol bx,1		;左边的先显示,循环左移
	mov dl,30h		;默认dl显示0
	adc dl,0		;带进位加法
	mov ah,2
	int 21h
	loop L1
	
	mov ah,4ch
	int 21h
main endp
code ends
	end 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 stack
	dw 100 dup (?)
	top label word
stack ends
code segment
	assume cs:code,ds:data,ss:stack
main proc far
	mov ax,data
	mov ds,ax
	mov ax,stack
	mov ss,ax
	lea sp,top
	
	mov bx,-958		;1111 1100 0100 0010(二进制)/176102(八进制)
	
	rol bx,1		;第一位直接输出		
	mov dl,30h		;默认为数字0
	adc dl,0
	mov ah,2
	int 21h
	
	mov cx,5		;还有5位八进制数
L1:
	push cx			;因为bx要循环左移3次,要用到cl,保护cx进栈
	
	mov cl,3		;bx循环左移3次
	rol bx,cl
	
	mov dl,bl		;把bx的低8位放到dl
	and dl,7		;屏蔽高5位
	add dl,30h		;转换成数字
	
	mov ah,2		;显示输出
	int 21h
	
	pop cx			;还原cx,继续循环
	loop L1
	
	mov ah,4ch
	int 21h
main endp
code ends
	end 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 stack
	dw 100 dup (?)
	top label word
stack ends
code segment
	assume cs:code,ds:data,ss:stack
main proc far
	mov ax,data
	mov ds,ax
	mov ax,stack
	mov ss,ax
	lea sp,top
	
	mov bx,-6908		;1110 0101 0000 0100(二进制)/E504(十六进制)
	mov cx,4
L1:
	push cx
	mov cl,4
	rol bx,cl
	
	mov dl,bl
	and dl,0fh			;屏蔽高4位
	
	cmp dl,9
	ja L2
	add dl,30h			;输出0-9
	jmp print

L2:
	add dl,37h			;输出A-F
	jmp print

print:
	mov ah,2
	int 21h
	pop cx
	loop L1
	
	mov ah,4ch
	int 21h
main endp
code ends
	end main

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

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

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

main endp
code ends
	end main

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

在这里插入图片描述

data segment
data ends
stack segment stack
	dw 100 dup (?)
	top label word
stack ends
code segment
	assume cs:code,ds:data,ss:stack
main proc far
	mov ax,data
	mov ds,ax
	mov ax,stack
	mov ss,ax
	lea sp,top
	
	mov bx,-32768
	mov cx,0
	mov si,10
	
	mov ax,bx
	mov dx,0
	add ax,0
	jns L2		;符号位为0
	neg ax		;符号位为1,求补
L1:
	div si
	push dx
	inc cx
	cmp ax,0
	je exit1
	mov dx,0
	jmp L1
		
L2:
	div si
	push dx
	inc cx
	cmp ax,0
	je exit2
	mov dx,0
	jmp L2
	
exit1:
	mov dl,'-'
	mov ah,2
	int 21h

exit2:	
	pop dx
	add dl,30h
	mov ah,2
	int 21h
	loop exit2
	
	mov ah,4ch
	int 21h
main endp
code ends
	end main

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/557300.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

时序深入之CPR(Clock Pessimism Removal)详解

目录 一、CPR概念 二、CPR的计算 三、CPR的开启关闭 四、CPR为0 ​五、参考资料 一、CPR概念 在时序报告的目标时钟路径中,会有一行数据clock pesssimism,第一次见可能都会对这个概念感到疑惑 同样在每条时序路径的summary中,clock pat…

自动化测试Selenium(4)

WebDriver相关api 定位一组元素 webdriver可以很方便地使用findElement方法来定位某个特定的对象, 不过有时候我们需要定位一组对象, 这时候就要使用findElements方法. 定位一组对象一般用于一下场景: 批量操作对象, 比如将页面上的checkbox都勾上. 先获取一组对象, 再在这组…

[最新]访问/加速StackOverFlow的方法

但是有很多问题都是在StackOverFlow上有现成的解决方案,而某度搜索引擎…前一页的回答互相抄袭,看着实在胀眼睛。 话不多说,解决办法: 直接访问插件商店下载插件(最快捷方便,点点就行)&#x…

Linux系统编程——权限概念和权限管理

目录 一,关于Shell 1.1 外壳程序 1.2 shell的作用 1.3 shell运行原理 二,权限概念 2.1 用户与权限 2.2 su(用户切换指令) ​编辑 2.3 提升指令权限和信任名单 三,文件权限 3.1 关于文件权限 3.2 文件访问者…

UG10.如何设置鼠标滚轮操作模型放大缩小方向?

UG10.如何设置鼠标滚轮操作模型放大缩小方向呢?看一下具体操作步骤吧。 首先打开UG10.软件,在主菜单栏选择【文件】下拉菜单,选择【实用工具】。 点击【用户默认设置】。 文章源自四五设计网-https://www.45te.com/45545.html 选中【基本环…

python语言零基础入门——变量与简单数据类型

目录 一、变量 1.创建变量 2.变量的修改 3.变量的命名 (1)常量 (2)标识符 (3)关键字 (4)命名规则 二、简单数据类型 1.变量的数据类型 2.数据类型 3.整型(In…

中断的设备树修改及上机实验(按键驱动)流程

写在前面的话:对于 GPIO 按键,我们并不需要去写驱动程序,使用内核自带的驱动程序 drivers/input/keyboard/gpio_keys.c 就可以,然后你需要做的只是修改设备树指定引脚及键值。 根据驱动文件中的platform_driver中的.of_match_tabl…

C++之类和对象三

目录 拷贝构造函数 定义铺垫 浅拷贝 深拷贝 总结 拷贝构造函数 那在创建对象时,可否创建一个与一个对象一某一样的新对象呢? 定义铺垫 构造函数:只有单个形参,该形参是对本类类型对象的引用(一般常用const修饰)&#xff0c…

2024年华中杯B题论文发布+数据预处理问题一代码免费分享

【腾讯文档】2024年华中杯B题资料汇总 https://docs.qq.com/doc/DSExMdnNsamxCVUJt 行车轨迹估计交通信号灯周期问题 摘要 在城市化迅速发展的今天,交通管理和优化已成为关键的城市运营问题之一。本文将基于题目给出的数据,对行车轨迹估计交通信号灯…

【1577】java网吧收费管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 网吧收费管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…

一篇文章搞定Jenkins自动化部署JDK17+SpringBoot3.X+新版AlibabaCloud打包Docker镜像推送私有镜像仓库

🚀 作者 :“二当家-小D” 🚀 博主简介:⭐前荔枝FM架构师、阿里资深工程师||曾任职于阿里巴巴担任多个项目负责人,8年开发架构经验,精通java,擅长分布式高并发架构,自动化压力测试,微服务容器化k…

Redis中的订阅发布(二)

订阅与发布 订阅频道 每当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候,服务器都会将客户端与被订阅的频道 在pubsub_channels字典中进行关联。 根据频道是否已经有其他订阅者,关联操作分为两种情况执行: 1.如果频道已经有其他订阅者&#xff0c…

微信小程序echart图片不显示 问题解决

目录 1.问题描述:2.解决方法:2.1第一步2.2第二步2.2效果 小结: 1.问题描述: echart图片不显示 图片: 2.解决方法: 2.1第一步 给wxml中的ec-canvas组件添加宽高样式:style"width: 100%…

图文教程 | Git安装配置、常用命令大全以及常见问题

前言 因为多了一台电脑,平时写一些代码,改一些文件,用U盘存着转来转去特别麻烦。于是打算用Git管理我的文件,方便在两个终端之间传输数据啥的。也正好给新电脑装好Git。 📢博客主页:程序源⠀-CSDN博客 &…

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL

MathType安装导致的Word粘贴操作出现运行时错误‘53’:文件未找到:MathPage.WLL 解决方案 1、确定自己电脑的位数; 2、右击MathType桌面图标,点击“打开文件所在位置”,然后找到MathPage.WLL ,复制一份进行…

深度 | 践行绿色健康可持续发展,这家企业提供了价值范本

文 | 螳螂观察 作者 | 余一 近段时间以来,小米SU7热度一直不减,在展露小米强大品牌号召力的同时,也侧面体现出了当前消费者对于新能源汽车的喜爱。 而消费者选择新能源汽车时,环保因素也起到了至关重要的作用。像前几日&#x…

PolarDB闪电助攻,《香肠派对》百亿好友关系实现毫秒级查询

云原生数据库PolarDB分布式版(PolarDB for Xscale,简称PolarDB-X)有极强的线性扩展能力,能够多写多读;它的全局索引能力,是分布式改造的利器,成功解决了传统分布式方案中多维度查询的难题&#…

探究欧拉恒等式的美学与数学威力

正如老子所述,“道生一,一生二,二生三,三生万物”,数学作为人类认知自然法则的语言,其数系的不断发展象征着对世界理解的深化。从自然数经由分数、无理数至复数,复数虽看似反直觉,却…

探索AI大模型:理论、技术与应用

引言 近年来,随着深度学习技术的迅猛发展,AI大模型已经成为人工智能领域的重要研究方向和热点话题。AI大模型,指的是拥有巨大参数规模和强大学习能力的神经网络模型,如BERT、GPT等,这些模型在自然语言处理、计算机视觉…

es安装中文分词器

下载地址,尽量选择和自己本地es差不多的版本 https://github.com/infinilabs/analysis-ik/releases 下载好,解压,把里面的文件放到es的plugins/ik目录下 把plugin-descriptor.properties文件里的es版本改成自己对应的 再启动es,能…