第九篇 单步中断

MuJoCo新手必看:5分钟搞定你的第一个机器人仿真(附Python代码) 本文为零基础新手提供了一份详尽的MuJoCo物理仿真引擎入门指南。从环境搭建、MJCF模型文件解析,到编写Python控制代码,手把手教你5分钟内创建并运行第一个机器人仿真。内容涵盖双摆模型控制与自定义四轮小车构建,帮助你快速掌握这一高性能开源工具,迈出机器人学与强化学习仿真的第一步。 阅读详情

单步中断在学习基本的8086指令和程序设计时基本很少被提及,以至于很多人对其都不太了解。

本博文简单介绍少单步中断的执行过程以及用途。

 

调用单步中断一般是设置标志寄存器的内容,使得TF=1,则会在下一条指令执行完成后进入单步

中断服务程序。单步中断的服务程序与其他中断服务程序没有区别。程序员可以设置其中想写的

内容。如果TF=1一直没有被清零,那么以后一直会单步执行程序,也就是说每执行一条指令后就

进入单步服务程序,直至程序执行完毕。

 

这里也提下,为什么在进行中断响应时会使TF=0?

看下单步中断响应过程,硬件自动完成:

1、标志寄存器FLAGS进栈

2、置IF=0,TF=0

3、返回地址(CS:IP)进栈

4、根据中断号n,从地址0:n*4取出4字节的中断向量

5、转去执行中断服务程序

硬件自动完成的过程中,不希望有单步中断,否则可能会使得不能正常执行中断服务程序!

 

提供一个改写1号中断的中断服务程序。执行完后,屏幕显示4个Y

initint equ 1h

data segment
	addr dw ?,?
data ends

sseg segment stack
	dw 512 dup (?)
sseg ends

code segment
	assume cs:code,ds:data,ss:sseg
start:
	mov ax,data
	mov ds,ax

	mov ax,sseg
	mov ss,ax

	mov ax,0
	mov es,ax

	;保存1h中断的原始地址
	mov ax,es:[initint*4]
	mov addr,ax
	mov ax,es:[initint*4+2]
	mov addr[2],ax

	;加入新中断服务程序地址
	cli
	lea ax,isr
	mov es:[initint*4],ax
	mov ax,seg isr
	mov es:[initint*4+2],ax
	sti

	pushf
	mov bp,sp
	or word ptr [bp],0100h  ;TF置1
	popf

	mov ax,0
	mov bx,0

	;恢复原中断地址
exit:
	cli
	mov ax,addr
	mov es:[initint*4],ax
	mov ax,addr[2]
	mov es:[initint*4+2],ax
	sti

	mov ah,4ch
	int 21h

isr proc far
	push ax
	push dx
	
	mov ah,2
	mov dl,'Y'
	int 21h
	
	pop dx
	pop ax
	iret
isr endp

code ends
	end start


 

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧 本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。 阅读详情

相关推荐

HT7533与1117稳压芯片动态特性对比:实测分析与优化策略

本文深入对比了HT7533与1117稳压芯片的动态特性,包括电压过冲和瞬态响应能力,并提供了实测数据与优化策略。HT7533适合低功耗设备,而1117在大电流和稳定性要求高的场景表现更优。文章还分享了PCB布局和电容选择的实用建议,帮助工程师根据项目需求选择合适的稳压芯片。

weixin_28454475的博客 614

微机原理学习笔记(6):中断操作

微机原理学习笔记(6):中断 硬件中断:由外部硬件产生 非屏蔽中断:外部芯片通过CPU的NMI引脚发出的申请引起的中断 可屏蔽中断:外部芯片通过CPU的INTR引脚发出的申请引起的中断 软件中断:CPU执行某些指令或软件,某些特殊操作或由INT指令引起的中断 软件中断指令: INT n指令 INT 3 ;例,触发3号中断(断点中断) INTO ;例,溢出中断 ...

Wanginsten的博客 3160

YOLOv8验证的命令以及计算coco指标

好久不看代码,都不知道怎么验证的了,来记录一下。1、计算coco指标。

毕竟是Shy哥 1481

如何在程序中产生单步中断

<br />首先说一下CPU的标志寄存器<br /> <br />标志寄存器(Flags Register,FR)又称程序状态字(Program Status Word,PSW)。这是一个存放条件标志、控制标志寄存器,主要用于反映处理器的状态和运算结果的某些特征及控制指令的执行。<br /><br /><br />各标志在标志寄存器中的位置<br />条件标志:CF(Carry Flag)进位标志:用于反映运算是否产生进位或借位。如果运算结果的最高位产生一个进位或借位,则CF置1,否则置0。运算结果的最高位

gold0523的专栏 2181

Halcon: 获取仿射矩形-rectangle2的四个顶点、四条边的中点

Halcon 工业应用实用教程中的一个例子: * CenterY : 仿射矩形中心y * CenterX: 仿射矩形中心x * Phi: 仿射矩形角度 * Len1: 仿射矩形宽的一半 * Len2: 仿射矩形高的一半 * CornerY: 仿射矩形端点y * CornerX: 仿射矩形端点x * LineCenterY: 仿射矩形边中点y * LineCenterx: 仿射矩形边中点x * 矩...

ruotianxia的博客 8575

開機自動進入UEFI Interactive Shell無法正常開機怎麼辦?

BIOS/UEFI,啟動後進入UEFI Interactive Shell大多數人都告訴你沒有安裝系統去裝系統吧,但你明明昨天還在運行系統?今天就這樣?有沒有解決辦法?

sheaahhoi1的博客 7746

单步中断

基本上,CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。单步中断的类型码为1,则它所引发的中断过程如下: 1) 取得中断类型码1; 2)标志寄存器入栈,TF、IF设置为0 3)CS、IP入栈 4)(IP)=(1*4), (CS)=(1*4+2)。 Debug的实现就是提供了单步中断的中断处理程序,功能为显示所有寄存器中的内容后等待输入命令...

weixin_33860147的博客 825

开关电源拓扑结构选型指南:从Buck到Full-Bridge的实战解析

本文为硬件工程师提供了开关电源拓扑结构的实战选型指南。文章系统解析了从基础的Buck、Boost、Buck-Boost,到隔离型的Flyback、Forward,再到中高功率的半桥、全桥以及高效率的LLC谐振拓扑的适用场景与核心特点。通过对比分析各拓扑的优缺点,并结合输入输出电压、功率等级、成本与效率等关键参数,给出了清晰的选型决策路径,帮助工程师根据具体项目需求选择最合适的电源“骨架”。

weixin_29306261的博客 110

【8086汇编】单步中断

1.引子 2.定义 3.响应中断的特殊情况

IT_dog的博客 254

基于YOLOv8的铁路轨道异物检测系统设计与实现

目标检测是计算机视觉领域的核心任务之一,旨在识别图像中特定目标的位置和类别。传统方法主要依赖手工特征(如HOG、SIFT等)和分类器(如SVM),而深度学习方法通过卷积神经网络自动学习特征表示,显著提升了检测性能。YOLO(You Only Look Once)系列算法作为单阶段目标检测的代表,以其高效的检测速度著称。YOLOv8是Ultralytics公司于2023年发布的最新版本,在精度和速度上都有进一步提升。

YOLO 575

Centos7系统添加中文支持(附中文语言包)

这里以centos7.6为例,在安装系统是没有选择中文,之后如果需要添加中文支持。在命令行执行后,会提示启动图形模式失败,转为启动文本模式。文本模式其实和图形模式差不多,操作需要用键盘而不是鼠标。在弹窗后,通过上下键选择Chinese(P.R of China) - 中文(简体):然后,按Tab键选择Yes,点击回车。rebootlocale可以看到系统语言已经变成了zh_CN.utf-8:之后,服务器上的中文名称就可以正常显示正常了。

悦分享 685

【汇编语言】中断及外部设备操作

本篇文章我们会详细讲到,中断及其处理,编制中断处理程序,单步中断,有int指令引发的中断,BIOS和DOS中断处理。端口的读写,操作CMOS RAM芯片,外设连接与中断,PC机键盘的处理过程,定制键盘输入处理,改写中断历程的方法,用中断相应外设,应用:字符串的输入,磁盘读写,发声程序。

2301_80035097的博客 3050

HarmonyOS应用开发者基础认证

B. 自定义组件:可复用的 UI 单元,可组合其它组件。D. 内置组件:ArkTS中默认内置的基本组件和布局组件,开发者可以直接调用,如Column、Text、Divider、Button等。E. 属性方法:用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等。在Column和Row容器组件中,justifyContent用于设置子组件在主轴方向上的对齐格式,alignItems用于设置子组件在交叉轴方向上的对齐格式。

牛肉胡辣汤 3821

CPU的单步中断

CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。也就是说如果CPU检测到TF位为1,CPU就会去转去执行1号中断处理程序 其实在我们执行Debug的t命令的时候,就用到了CPU的单步中断,Debug当中提供了单步中断的中断处理程序,在使用t命令之后,Debug会将标志寄存器的TF位设置为1,然后使得CPU工作于单步中断的方式下,也就是说CPU在执...

rv0p111 2092

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

汇编语言--单步中断

CPU在执行完一条指令之后,如果检测到标志寄存器的TF位为1,则产生单步中断,引发中断过程。单步中断的中断类型码为1 Debug是如何利用CPU所提供的单步中断的功能进行调试?如使用t命令查看寄存器状态 Debug提供了单步中断的中断处理程序,功能为显示所有寄存器中的内容后等待输入命令 在使用t命令执行指令时,Debug将TF设置为1,在CPU执行完这条指令后就引发单步中断,执行单步中断的中断处理程序,所有寄存器中的内容被显示在屏幕上,并且等待输入命令。 在进入中断处理程序之前,设置TF...

1万+

假人有限元模型

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

在 Visual Studio 中启动、中断、单步执行、通过代码运行和停止调试

开始调试 VS 项目;附加到进程;中断代码;单步执行代码;运行到光标处;运行到调用堆栈上的函数;设置下一语句;单步执行“仅我的代码”;停止并重新开始调试;从调试的进程分离。 内容 Start debugging a VS project; attach to a process Break into code, step or run th

poem_of_sunshine的专栏 4万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

详解汇编里的单步中断-T使用寄存器标志位TF和IF

debug利用CPU提供的单步中断功能 程序的正常执行 取指令 改变CS:IP 执行指令 取指令 DEBUG提供单步中断的中断处理程序,显示所有寄存器的内容后等待输入命令 使用-T命令,debug将TF标志设为1,使CPU工作在单步中断的方式下 自定义单步中断处理程序,实现特殊功能 单步中断的处理与过程 TF陷阱标志(trap flag):用于调试的单步方式操作 TF = ...

Never Give Up 9954

windbg 断点+单步

1.设置断点 bp,bu,bm 软中断 [~td] bp[ID] [Options] [Address[Passess]] ['CommandString'] ~td:线程序号。如果设置了线程序号,则只有当该线程调用才会触发断点。 ID:断点编号,如果不指定则从0开始编排 Address:断点地址,eg:TestModals 模块的Func 函数 TestModals!Func Passess:...

CAir2的专栏 5167

微机原理——8086中断类型以及中断向量表、中断响应、中断返回

这里写目录标题先验知识回顾控制寄存器回顾1、8086中断类型1、外部可屏蔽中断2、外部不可屏蔽中断3、除法错中断4、单步中断5、断点中断6、溢出中断7、软中断2、8086中断向量表3、8086中断响应1、外部可屏蔽中断响应2、外部不可屏蔽中断响应3、内部中断响应4、8086中断返回 先验知识回顾 控制寄存器回顾 PSW是Program Status Word的缩写,即程序状态字(也叫程序状态寄存......

hanhan的博客 3万+

【汇编语言】内中断(三) —— 中断探险:从do0到特殊响应的奇妙旅程

本文主要讲述了汇编语言中的中断处理,特别是如何通过中断向量表和单步中断功能进行程序调试。通过具体实例,详细分析了中断机制在程序执行中的应用与调试技巧。

2301_80191662的博客 1298

断点和单步执行

需要对CPU的中断和异常要先有所了解参考上一篇文章 断点 INT 3:CPU的调试指令专门用来中断到调试器,是一条单字节指令0xCC,CPU执行到这条指令时就会转去异常处理函数来处理这个异常(转入调试器),在处理完成后执行下一条指令。 利用INT 3指令的特殊性我们在调试器中可以使用INT 3来替换某一条指令的第一个字节来实现断点的功能,执行到这条指令时CPU中断到调试器,调试器在将原先的指令

pokeyode的专栏 4609

一个想了好几天的问题——关于8086cpu自己编写9号中断不能单步的问题

在《汇编语言》第十五章中我们可能遇到这样的问题:程序运行正确,但是debug单步调试,却无法运行 修改int 9h中断例程入口地址的指令,虚拟模式下,debug提示指令无效,而在实模式下,则程序卡死。 这里我的看法如下:因为我们单步的时候,当设置9号中断偏移地址的指令执行后,这时段地址还没有进行相应 的设置,而单步键入命令(如:t命令)的时候程序要调用键盘中断程序,这就导致程序转去一个

MC_Gee 958

如何获取真正的中断入口地址

概述:   我们知道,DOS 的中断例程的入口地址存在 0000:0000 开始的中断向量表中,当程序要要建立一个中断例程时,需要修改中断向量表把入口地址指向自己的程序,为了使原来的中断例程能正常使用,在出口的时候还要用远跳转指令回到原中断的入口地址,如 DOS 中断 INT 21H,在 DOS 启动后,后面要挂上很多的新的例程,如 SMARTDRV 等等,磁盘中断 INT 13H 也是如此。  

w9521423的博客 3909

内中断

中断是CPU处理外部突发事件的一个重要技术。 它是CPU在运行过程中对外部事件发出的中断请求及时地进行处理,处理完成后又立即返回断点,继续进行CPU原来的工作。 中断源:发出中断请求的来源 中断:软件中断(并不是真正的中断),硬件中断 硬件中断又分为外部中断(可屏蔽)和内部中断(不可屏蔽) 内部中断是指因硬件出错(如突然掉电、奇偶校验错误)或运算出错(除数为0,运算溢出,单步...

GM_AMRC的博客 2272

中断处理过程

概念 中断全过程指的是从中断源发出中断请求开始,CPU响应这个请求,现行程序被中断,转至中断服务程序,直到中断服务程序执行完毕,CPU再返回原来的程序继续执行的整个过程。 执行过程 大体上可以把中断全过程分为5个阶段:中断请求、中断判优、中断响应、中断处理和中断返回。 ...

Hello World 2万+
上一篇: 第五篇 对话框控件的使用
下一篇: 第十篇 jmp $
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值