王爽《汇编语言》实验10_汇编语言王爽 实验10_benben_dog的博客-程序员宅基地

技术标签: 汇编语言  实验10  王爽  Linux内核学习  汇编补课  

1.显示字符串

编写一个通用的子程序,向调用者提供与显存无关的接口,方便调用者在窗口指定位置显示字符串的功能。

assume cs:code

data segment
	db 'Welcome to masm!',0		;要显示的字符串
data ends

code segment
start:	mov dh,8			;行号
	mov dl,3			;列号
	mov cl,2			;指定显示属性(颜色、闪烁等),此处为绿色显示
	mov ax,data
	mov ds,ax
	mov si,0
	call show_str		        ;调用子程序
	
	mov ax,4c00h
	int 21h
		
;子程序		
show_str:	mov ax,0b800h		;显存的段地址
		mov es,ax
		mov al,0a0h		;0a0h表示每行的字符数(每行80个字符,每个字符需占用2个字节,
						;其中包含属性字节),用于计算用户指定行的起始地址			
		mul dh			;计算得到指定行偏移地址
		mov di,ax
		mov al,2		;用于计算用户指定行的起始列位置
		mul dl
		add di,ax		;最后得到需要显示字符的具体偏移地址,并赋给di
			
    put:	push cx			;由于在子程序中需要使用cx寄存器,这里保存cx中的值(字体的属性)
		mov cl,ds:[si]	    ;获得需要显示的字符
		mov ch,0
		jcxz ok			;若cx=0,则转到ok处,返回,即表示到达了字符串末尾
		mov es:[di],cl		
		pop cx
		mov es:1[di],cl
		inc si
		add di,2
		jmp short put			
ok:		ret				;子程序返回
code ends
end start

运行结果:

2.解决除法溢出的问题

assume cs:code

code segment
	mov ax,4240h
	mov dx,000fh
	mov cx,0ah
	call divdw
	
	mov ax,4c00h
	int 21h
	
;子程序	
divdw:	push bx			;保存主程序中可能使用的寄存器
	push ax			;将ax暂存,用于高16位除法
	mov ax,dx
	mov dx,0
	div cx
	
	mov bx,ax		;将高16位除法所得商暂存bx中
	pop ax			;将ax出栈,用于低16位除法
	div cx
		
	mov cx,dx		;将余数保存在cx中
	mov dx,bx		;将结果的高16位保存在dx中
		
	pop bx			;将子程序开始保存的寄存器还原,以确保主程序的正确
	ret
code ends
end

初始状态:

子程序返回前:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/benben_dog/article/details/100547375

智能推荐

Spring Cloud Ribbon和Feign重试机制_朱老僧的博客-程序员宅基地

ribbon重试次数=MaxAutoRetries*(MaxAutoRetriesNextServer+1)

一、Spring Boot 核心之自动装配实现_三师兄东流的博客-程序员宅基地

目录一、简介二、底层装配技术简述三、实现1、激活自动装配 -` @EnableAutoConfiguration`2、实现自动装配 - `XXXAutoConfiguration`3、配置自动装配实现 - ` META-INF/spring.factories`4、测试四、总结一、简介在 Spring Boot 场景下,基于约定大于配置的原则,实现 Spring 组件自动装配的目的。二、底...

springboot mybatis 二级缓存问题_guoyiguang2的博客-程序员宅基地

1. 原理二级缓存原理:Mybatis的二级缓存是指mapper映射文件。二级缓存是多个sqlSession共享的,其作用域是mapper下的同一个namespace。在不同的sqlSession中,相同的namespace下,相同的查询sql语句并且参数也相同的情况下,会命中二级缓存。如果调用相同namespace下的mapper映射文件中的增删改SQL,并执行了commit操作。此时会清空该namespace下的二级缓存。2. 同一张表的 xml 和 接口 文件copy 到自己的目录下,有自己

java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用_pinfo, jps,_u010379321的博客-程序员宅基地

java虚拟机内存监控工具jps,jinfo,Jstack,jstat,jmap,jhat使用基于Sun HotSpot JVM  这里将介绍几款sun hotspot jvm 自带的监控工具:请确保java_home/bin配置到path环境变量下,因为这些工具都在jdk的bin目录下 jps(JVM Process Status Tool):JVM机进程状况工具用来查看基于HotSpot JV...

Unity 官方教程1_unity官方教程_Takasi711的博客-程序员宅基地

目录1.UnityPlayground小游戏1.创建玩家2.添加物品3.添加背景预制件1.UnityPlayground小游戏1.创建玩家 打开项目: 打开前面课程中已经准备好的 playground 项目 创建新场景: project 窗口 --> Assets/scenes 文件件,右键 create scene ,创建只带有一个 camera 对象的场景,重命名为 PlaneAsteroid 添加玩家飞船: projec

随便推点

android sim卡状态改变广播,Android 开机SIM卡变更提示信息始终为卡1的有关问题解析..._weixin_39991055的博客-程序员宅基地

Android 开机SIM卡变更提示信息始终为卡1的问题解析在高通平台上,更换SIM卡后开机会有一个提示信息。在双卡项目上遇到了这样一个问题,当用户只插入一张卡2时,开机SIM变更提示显示为卡1。如图所示:这里主要是分析为什么这个SIM卡信息会显示错误,所以不赘述弹出过程,直奔主题:vendor/qcom/proprietary/qrdplus/Extension/apps/PhoneFeatur...

修改hosts文件提示没有权限保存怎么办_南有嘉念的博客-程序员宅基地

修改hosts文件提示没有权限保存怎么办?很多小伙伴在配置ip和域名关联是都碰到了这个问题,下面让我们来看一下解决方法。进入该文件的地址,此处是:C\Windows\System32\drivers\etc,右击hosts选择属性。选择安全选项—选择当前的用户----点击编辑我这里选择的是完全控制–点击确定就完成啦。希望能对你的问题有所帮助。...

Android App 连接ble蓝牙模块并进行通讯_android 连接蓝牙模块_qq_25091649的博客-程序员宅基地

Android App 连接ble蓝牙模块并进行通讯对于蓝牙的基础知识我在这里就不赘述了,直接来干货,讲解连接ble蓝牙模块并进行通讯,通讯使用广播模式,结尾附上一个项目的demo。精彩内容即将开始:一、要使用蓝牙功能,首先要打开权限,在AndroidManifest.xml文件中配置权限信息,如下:<!--蓝牙权限--> <uses-permission and...

Hadoop之高可用HA_高可用hadoop集群论文主要内容_zuodaoyong的博客-程序员宅基地

Hadoop的HA主要是HDFS的HA和YARN的HA1、HDFS高可用HA(双NameNode消除单点故障)Hadoop2.0之前,在HDFS集群中NameNode存在单点故障(SPOF)。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过HA方式将NameNode很快的切换到另外一台机器(1)HDFS的HA注意点 1)元数据管理方式需要改变 ...

git 常见问题_git出现了问题,是怎么输入wq的_是大娜娜呀的博客-程序员宅基地

git 在pull或者合并分支的时候有时会遇到这个界面。可以不管(直接下面3,4步),如果要输入解释的话就需要:1.按键盘字母 i 进入insert模式2.修改最上面那行黄色合并信息,可以不修改3.按键盘左上角"Esc"4.输入":wq",注意是冒号+wq,按回车键即可

快来跟我一起学 React(Day5)_vv_小虫的博客-程序员宅基地

简介上一节我们完成了从 0 开始搭建一个企业级 React 项目的全部内容,项目是有了,但是我们一直都没有近距离接触过 React,所以接下来我们就快速撸一遍 React 官方文档内容,弄清楚一些概念性的东西,为后面的源码分析章节做铺垫。知识点项目搭建核心概念高级指引API 指引hook 指引后面这几节都比较轻松,因为我们基本上把 React 官网:https://reactjs.org/ 的内容跑一遍。让我们开始吧!项目搭建我们直接 clone 一个前面我们搭建的基础项目,然后取

推荐文章

热门文章

相关标签