汇编语言 实验12 0号中断处理程序

《汇编语言第三版》王爽学习历程——实验12 编写0号中断处理程序 要求: 编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串”divide error!”。 重点回顾: 这个实验几乎没什么难度,实在写不出的话都可以抄书上的案列,其实这个实验主要还是在理解中断处理程序被写入内存,以及发生中断时,CPU如何去调用中断处理程序的整个过程。 汇编代码: assume cs:codesg codesg segment ... 阅读详情
assume cs:codesg
codesg segment
start:
			mov ax,0
			mov es,ax
			mov di,0200h   		 	;将es:di 指向 divError中断处理程序的要存放的起始地址  设置目的地址  即代码段存放到0:200处
				
			mov ax,codesg		 	;或者使用mov ax,cs 效果相同
			mov ds,ax
			mov si,offset divError	;将ds:si 指向 divError中断处理程序的起始地址  设置目的地址
			
			cld						;设置DF=0 正向传送
			
			mov cx,offset divErrEnd - offset divError;计算整个中断程序的长度  注意这里要用divError
			rep movsb				;将中断处理程序放到0200:0000的内存段中
			
			mov ax,0
			mov ds,ax
			mov	word ptr ds:[0],200h		;设置中断向量表  就是中断程序执行的起始地址的IP 偏移地址
			mov word ptr ds:[2],0	        ;设置中断向量表  就是中断程序执行的起始地址的CS 段地址
			
			mov dx,3
			mov ax,1
			mov cx,1
			div cx					    ;测试除法溢出 div指令格式  div reg  或 div 内存单元
		 
			mov ax,4c00h
			int 21h
		 

divError:		;除法溢出时显示"divide error!"  也就是说divError的功能是在屏幕上显示 divide  error!
			jmp short divErr1		;注意"divide error!" 是不可执行代码  所以要在其前面加上,jmp指令 跳过它 转而执行可执行代码
			db "divide error!"		;屏幕要显示的内容  

	divErr1:mov ax,0b800h			;注意这条指令为中断程序的执行开始,而上面的数据域费程序的入口  参照codesg
			mov es,ax
			mov di,12*160			;要在屏幕上显示的位置
		 
			mov ax,cs				;此时cs:ip已经指向到了中断程序内
			mov ds,ax				;找到要显示的字符串地址	
			mov bx,202h				;设置ds:si指向字符串  bx指向字符串的起始地址  jmp short divErr1指令占了两个字节
			
			mov cx,13			    ;要显示的字符串的长度
		s:	mov al,[bx]
			mov byte ptr es:[di],al
			mov byte ptr es:[di+1],00001011b;设置字体颜色为绿色高亮
			inc bx
			add di,2
			loop s
		 
			mov ax,4c00h
			int 21h		;中断程序执行完成后返回DOS
 divErrEnd: nop	;nop 占一个字节

codesg ends
end start

小结: 一定要区分开主程序,和中断处理程序 中断处理程序中使用的寄存器与主程序中使用的寄存器是完全独立的,两者之间没有任何的影响。
在这里插入图片描述

王爽 汇编语言 第三版 实验12 编写0号中断的处理程序 编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串“divide error!”,然后返回到DOS 阅读详情

相关推荐

汇编语言响铃实验

运用汇编语言编写的.asm格式的可执行文件,响铃实验

汇编踩过的坑(error A1010,A2085 ,divide error,A2070,注意事项)

汇编踩过的坑(error A1010,A2085 ,divide error,A2070,注意事项) 最近也是在学汇编语言,上机的时候发现错误很不友好,总是断断续续,上网去查询,又查不到,花费大半天时间才找出更改办法。为了让你们可以更好的学习汇编语言,我总结了以下几个坑。 fatal error A1010: unmatched block nesting : main 如图所示: 这个error其实是由于前后段名不相同,前后子程序名不相同,这里的main(可以是其它的段名)会与代码段最后结束相呼应。 要改

qq_51297987的博客 9261

汇编语言中断程序实例

汇编语言中断程序实例 安装一个新的int 7ch中断例程,为显示输出提供如下的功能子程序。 (1)清屏。 (2)设置前景色。 (3)设置背景色。 (4)向上滚动一行 (一)用ah寄存器传递功能号:0表示清屏,1表示设置前景色,2表示设置背景色,3表示向上滚动一行......

汇编语言:实验十二 编写0号中断的处理程序

实验内容 编写0号中断处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divide error!",然后返回到DOS。 解题 这一章都在介绍中断,包括中断的产生、中断处理程序、中断向量表、中断过程、相关指令。 解决本次实验的前提是将本章的内容理解好,那么在完成这部分(原书第12章-内中断)之后,开始实验吧~ 分析整个中断过程 (1)当发生除法溢出的时候,产生0号中断信息,从而引发中断。 CPU会完成以下工作: 取得中断类型码 0 标志寄存器入栈,TF、IF 设置为 0 CS、IP入栈 (IP) =

nepu_bin的博客 4819

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南)

本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。

n2o3p4的博客 416

FortiOS路径遍历漏洞CVE-2022-41328实战复现:从环境搭建到漏洞利用全记录

本文深入解析FortiOS路径遍历漏洞CVE-2022-41328,从漏洞背景、影响范围到技术原理进行全面剖析。提供详细的漏洞复现环境搭建步骤和实战利用方法,并给出官方修复方案与临时缓解措施,帮助企业有效防御此类防火墙漏洞风险。

weixin_30485379的博客 524

(汇编语言)实验12 编写0号中断的处理程序

编写0号中断的处理程序 使得在除法溢出的时候,在屏幕上显示divide error!,然后返回dos界面 代码如下: assume cs:code code segment start: mov ax,0 mov ds,ax ...

1205

特征模理论指导滤波天线设计的优势和方法

本文探讨了特征模理论在滤波天线设计中的应用优势和方法。特征模理论通过分析天线结构的本征模特性,突破了传统经验设计的局限,实现了辐射与滤波功能的一体化设计。文章重点阐述了如何利用模式显著性(MS)和模式加权系数(MWC)来指导辐射零点的产生,揭示了辐射零点形成的物理机制。通过特征模分析,设计师可以明确调控天线结构和馈电系统,优化滤波性能。这种方法为现代多频/宽带滤波天线设计提供了理论依据和实用工具,显著提升了设计效率和性能指标。

qq_64207806的博客 957

异常处理

80x86处理器发布了大约20种不同的异常。内核必须为每种异常提供一个专门的异常处理程序。对于某些异常,CPU控制单元在开始执行异常处理程序前会产生一个硬件的错误码(hardware error code),并且压入内核态堆栈。下面列表给出了在80x86处理器中可以找到的异常的向量、名字、类型及其简单描述。更多信息可以在Intel的技术文挡中找到。0 - "Divide error

云(存储),松(耦合) 2561

VSCODE编辑+EIDE插件调试+STM8_Debug插件调试+IAR_STM8工具链编译开发项目

1. 安装 在VS CODE安装EIDE、STM8-Debug插件 2. 使用 EIDE 创建一个 8/16 Bit MCU 项目 新建虚拟文件夹,把工程外部的文件添加进虚拟文件夹,实现工程和源文件之间的关系,而不用实际把源文件复制到工程目录下。 EIDE工程和源文件实现分开放置,EIDE(EIDE工程)、EWSTM8(IAR STM8工程)、Project(ST Visual Develop工程) 选择工具链 烧录工具选择 头文件包含目录 添加宏定义 3. 编译 4. 使用STM8

TrueLink的博客 5500

从《视觉SLAM十四讲》到项目实战:一文读懂拓扑地图与语义地图为何是服务机器人的未来

本文探讨了服务机器人地图技术的演进,从传统几何地图到拓扑地图与语义地图的跨越。通过分析栅格地图的局限性和拓扑地图、语义地图的优势,揭示了它们在动态开放环境中的智能应用。文章还介绍了多模态语义融合架构和动态语义更新技术,为服务机器人的未来发展提供了技术路线图。

weixin_30292843的博客 478

汇编语言 实验12 编写0号中断处理程序

汇编语言 0号中断

hipparch的博客 449

机器学习的低代码与无代码平台:便捷入门之路

机器学习领域正涌现出大量低代码和无代码平台,使非技术人员也能轻松应用AI技术。低代码平台(如PyCaret、H2O AutoML)需少量编程但灵活性强,而无代码工具(如Google Cloud AutoML、Teachable Machine)则完全无需编程基础。这些平台覆盖图像识别、文本处理、业务预测等多种场景,适合快速部署简单项目。但专业人士仍需注意,这些工具无法替代复杂场景下的定制化开发。随着技术进步,低门槛AI工具正在改变各行业的创新方式。

2501_90323865的博客 154

汇编语言_实验12_编写0号中断处理程序

编写0号中断处理安装程序和处理程序

weixin_43916755的博客 721

高通 vs MTK vs 海思:三大平台 ISP 架构横向对比与实战差异分析

随着移动影像能力成为智能终端差异化竞争的核心维度,ISP(Image Signal Processor)架构日益重要。高通、MTK、海思三大 SoC 厂商在 ISP 设计上各具特色,不仅在图像处理链路、模块集成度、算法加速路径等方面存在显著差异,同时也决定了终端厂商在成像质量、调试复杂度与扩展能力上的实际表现。本文将基于真实平台项目经验,横向对比三大主流平台的 ISP 架构关键指标,系统分析其在实际开发过程中的能力边界、工程成本与调优空间,帮助工程师更精准地进行平台选型与优化策略制定。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 3934

工业级4~20mA转0~3V信号调理电路原理图设计,已量产(电流传感器)

在工业现场,4~20mA 电流信号是模拟量传输的 “老熟人”—— 抗干扰强、能跑长距离,但嵌入式 MCU 的 ADC 一般只认电压信号。最近做项目时,我设计了一款能覆盖 0~25mA(含超量程冗余)、线性输出 0~3V 的调理电路,经过现场调试挺稳定,分享下细节。

不脱发的程序猿 528

中断处理程序

王爽汇编之中断处理程序----------练技术 越来越感觉汇编也不是那么难于理解!实验12 编写0号中断的处理程序很简单,书上全部都给出了代码,不过今天还是收获到win7下原来也有debug,我之前是从来都不知道的,虽然简单,但也有必要记录一下,此贴就把以后关于中断处理的程序全部贴在这里了! 程序代码:

u014623200的专栏 322

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

(二十一)《汇编语言(王爽)》 | 实验 12:编写 0 号中断的处理程序

《汇编语言(王爽)》 | 实验 12:编写 0 号中断的处理程序

Skies_的博客 3581

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汇编语言 实验11 编写子程序 & 实验12 编写0号中断的处理程序

文章目录实验11 编写子程序实验12 编写0号中断的处理程序 实验11 编写子程序 编写一个子程序,将包含任意字符,以0结尾的字符串中的小写字母转变成大写字母,描述如下。 名称:letterc 功能:将以0结尾的字符串中的小写字母转变成大写字母 参数:ds:si指向字符串首地址 应用举例: assume cs:codesg datasg segment db "Beginner's All-purpose Symbolic Instruction Code.",0 datasg

Kni9hT's Blog 857

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

实验12 编写0号中断的处理程序

编写0号中断处理程序,使得在除法溢出时,在屏幕中间显示字符串'divide error!',然后返回dos。 前面讲到,内存0000:0000~0000:03FF,大小为1KB的空间是系统存放中断处理程序入口地址的中断向量表。8086支持256个中断,但是,实际上,系统要处理的中断事件远没有达到256个,所以在向量列表中,有许多单元是空的。 中断向量表睡觉哦PC系统中最重要的内存区,只用来存放...

流彩飞霞的专栏 1714

《汇编语言》王爽(第四版) 第十二章 实验12

本文是王爽老师《汇编语言》(第四版) 第十二章 的知识小结及 实验12 编写0号中断的处理程序 的分析及代码。通过这个实验,梳理有关0号中断处理程序的相关知识,并实现教材中的0号中断处理程序功能。本文是王爽老师《汇编语言》(第四版) 第十二章 的小结,及 实验12 编写0号中断的处理程序 的分析及代码,实现的功能是,写一个0号中断处理程序并安装在内存中,执行效果是在屏幕中显示“divide error!”。

Dr_Cheeze的博客 4625

汇编语言程序设计实验三

一、实验目的 掌握汇编编程规范,熟悉编程环境。 二、实验内容 1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验11)。 2、编写0号中断处理程序,使得在除法溢出发生时在屏幕中间显示“divide error!”(参见教材实验12)。(请预习第12章并完成实验,时间不够则在课后完成) 三、实验步骤算法及关键代码 题目一 1.实验思路与算法 ①思路: 本题其实没有在程序思想上设置难度,但重点是子程序和转变的问题,其中转变问题在第七章其实已经讲到,只需要循环取出数据区域的字符,与11011111B进

yeweij226的博客 3850

汇编语言 实验12 王爽

分析:实验12要实现0号中断处理程序,在屏幕中间显示 divide error后返回dos 1,字符串要放在不会被其他数据覆盖并且处理程序能时刻找到的位置,比如处理程序内,这样安装后程序才能找到字符串 2,ds:[si]指向字符串首地址,al保存字符,ah保存属性(红色) 3,es:[di]指向屏幕中间,ax作为输出数据 4,因为返回dos所以用21号中断而不用iret 程序: st...

宋开水的博客 2883

汇编语言 实验三

一、实验目的   掌握汇编编程规范,熟悉编程环境。 二、实验内容   1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验11)。   2、编写0号中断处理程序,使得在除法溢出发生时在屏幕中间显示“divide error!”(参见教材实验12)。(请预习第12章并完成实验,时间不够则在课后完成) 三、实验步骤算法及关键代码 1、编写子程序把字符串中的小写字母转变为大写字母(参见教材实验...

渣渣的夏天 3096

大学《汇编语言》(王爽) 实验十二 编写0号终端的处理程序

《汇编语言》书p251页(王爽)实验12 编写0号中断的处理程序要求解题代码STR是什么 要求   编写0号中断的处理程序,使得在除法溢出发生时,在屏幕中间显示字符串"divide error!",然后返回到DOS。 解题代码   书上有挺多可以借鉴的地方,比如书上p247-248的程序12.3和p249的设置中断向量的代码都是我们可以利用起来的代码。拼拼凑凑再改改就符合题意了。 assume cs:code code segment start: mov ax,cs mov d

weixin_45571987的博客 584
上一篇: 汇编语言(王爽) 课程设计一
下一篇: 汇编语言 int指令代替 loop指令
危楼百尺高
博客等级 码龄9年 12粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值