8086汇编复习4 - int指令 - 使用emu8086
int指令
中断信息可以来自CPU的内部和外部;int指令引发的中断是内中断;
int n,n为中断类型码;
CPU执行int n指令,相当于引发一个n号中断的中断过程;执行过程如下:
1)取中断类型码n;
2)标志寄存器入栈,IF=0, TF=0;
3)CS、IP入栈;
4)n*4赋值给IP寄存器;(n*4+2)赋值给CS寄存器;
从此处转去执行n号中断的中断处理程序;
mov ax, 0b800h
mov es, ax
mov byte ptr es:[12*160 + 40 * 2], '!'
int 0
此程序在Win2000中的DOS方式下执行,将在屏幕中间显示一个惊叹号,然后显示"Divide overflow"后返回到系统中。
程序并没有做除法;CPU执行int 0指令,引发中断,执行0号中断处理程序,系统的0号中断处理程序的功能是显示"Divide overflow",然后返回到系统;
int和call指令类似,都是调用一段程序;
在emu8086中,int 0 中断例程位于仿真内存F4170处;程序执行完,自己弹出仿真屏幕,显示一个惊叹号;
在系统板的ROM中存放着一套程序;称为BIOS;BIOS主要包含:
1)硬件系统的检测和初始化程序;
2)外部中断和内部中断的中断例程;
3)用于对硬件设备进行I/O操作的中断例程;
4)其他和硬件系统相关的中断例程;
DOS操作系统也提供了中断例程,DOS的中断例程就是操作系统向程序员提供的编程资源;
int 10h中断例程是BIOS提供的中断例程;其中包含了多个和屏幕输出相关的子程序;
int 10h设置光标位置;
mov ah, 2 ;置光标
mov bh, 0 ;第0页
mov dh, 5 ;dh中放行号
mov dl, 12 ;dl中放列号
int 10h
ah内容为2,后面再int 10h,就调用10h号中断例程的2号子程序;后面是参数;
设置光标到第0页,第5行,第12列;
在内存地址空间中,B8000H - BFFFFH 共32kB的空间,为80*25彩色字符模式的显示缓冲区;
显示缓冲区分为8页;每页4KB,4000B;一般情况下,显示第0页内容,B8000H - B8F9FH的4000个字节;
在emu8086中,int 10h 中断例程位于仿真内存F4190处;
程序运行完,手动弹出仿真屏幕,看不到有内容;
下面尝试在显示缓冲区手动输入内容;5行12列,要设置的位置大概在B8000后60个字节,即B803C处;在B803C手动输入99;原来它的仿真屏幕是即时处理的;手动修改了,马上自动弹出仿真屏幕,显示修改的内容;99的ASCII码大概是一个问号;在屏幕显示一个问号;
8086汇编复习4 - int指令 - 使用emu8086相关推荐
- 8086汇编复习3 - 标志寄存器 - 使用emu8086
1 认识标志寄存器 标志寄存器 CPU内部有一种寄存器,具有三种作用: 1)存储相关指令的某些执行结果: 2)用来为CPU执行相关指令提供行为依据: 3) 用来控制CP ...
- 8086汇编复习1 - 并使用emu8086模拟器查看效果
1 基本寄存器 不同的CPU,寄存器的个数.结构是不相同的. 8086CPU有14个寄存器:AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PS ...
- 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))
push和pop是用来操作栈的2个指令. push寄存器:将一个寄存器中的数据入栈pop寄存器:出栈用一个寄存器接收数据 1.push pop 只对字操作(不允许字节进栈)操作数长度为32位时进出栈为 ...
- 8086汇编基础 push,pop指令执行时,sp怎么变
首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走.我向1000:0000处push数据,那么push之前,sp初-2=sp末.先sp-2,再写入 pop,指针向高处 ...
- 【8086汇编基础】05--常用函数库文件--emu8086.inc
8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...
- 8086 汇编指令手册查询(转)
8086 汇编指令手册查询,编语言是一种面向机器的语言.它能够利用计算机所在硬件性并能直接控制硬件,在微型计算机系统的开发应用和过程控制和特别受到重视. 一.数据传输指令 -------------- ...
- 8086汇编寄存器及指令汇总
1 寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...
- 80×86汇编常用指令
80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...
- 8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等
同类学习笔记总结: (一).8086汇编学习之基础知识.通用寄存器.CS/IP寄存器与Debug的使用 (二).8086汇编学习之DS寄存器.SS/SP寄存器 一.汇编程序的基本格式: 1.基本格式与 ...
最新文章
- pcl求平面法向量_线性代数6——平面方程与矩阵
- 解决Android studio 非法字符的问题
- mysql select操作
- ZOJ 3829 Known Notation(贪心)
- 位掩码(BitMask)
- Review on Optical Flow Research
- NIO和BIO如何影响应用程序的设计-API调用
- java学习(167):生产者消费者问题
- python版本年份_Python问题:至今的年份和年份?
- testservice小项目总结
- easydarwin 安装_在Linux平台上搭建EasyDarwin,编译代码并简单部署
- Atitit dubbo使用总结 attilax总结 艾龙 总结 1. 概念	1 1.1. Dubbo提供的注册中心有如下几种类型可供选择:	2 1.1.1. Multicast注册中心	2 1.1
- 二进制、十进制和16进制对照表以及对应的字符
- java poi 设置时间空间_POI对Excel自定义日期格式的读取(实例代码)
- APK改之理(APK IDE)修改APK简单的入门教程
- 基于JavaEE的开放平台出租车系统_JSP网站设计_MySQL数据库设计
- SVN提交报错 Attempted to lock an already-locked dir
- c# .net 16进制转换10进制
- hacking8信息流邀请码第二关 代码详解
- 混合驱动+封装实现163邮箱登录+创建联系人+发送邮件