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相关推荐

  1. 8086汇编复习3 - 标志寄存器 - 使用emu8086

    1 认识标志寄存器 标志寄存器     CPU内部有一种寄存器,具有三种作用:     1)存储相关指令的某些执行结果:     2)用来为CPU执行相关指令提供行为依据:     3) 用来控制CP ...

  2. 8086汇编复习1 - 并使用emu8086模拟器查看效果

    1 基本寄存器 不同的CPU,寄存器的个数.结构是不相同的. 8086CPU有14个寄存器:AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PS ...

  3. 8086汇编push和pop指令注意点(push pop 只对字操作(不允许字节进栈))

    push和pop是用来操作栈的2个指令. push寄存器:将一个寄存器中的数据入栈pop寄存器:出栈用一个寄存器接收数据 1.push pop 只对字操作(不允许字节进栈)操作数长度为32位时进出栈为 ...

  4. 8086汇编基础 push,pop指令执行时,sp怎么变

    首先需要说明的是栈属于满递减栈,即栈顶在高地址,栈底在低地址 push,指针向低处走.我向1000:0000处push数据,那么push之前,sp初-2=sp末.先sp-2,再写入 pop,指针向高处 ...

  5. 【8086汇编基础】05--常用函数库文件--emu8086.inc

    8086汇编语言初学者教程(第5部分) 常用函数库 - emu8086.inc 通过引用一些常用函数,可以使你编程更加方便.在你的程序中使用其他文件中的函数的方法是INCLUDE后面接上你要引用的文件 ...

  6. 8086 汇编指令手册查询(转)

    8086 汇编指令手册查询,编语言是一种面向机器的语言.它能够利用计算机所在硬件性并能直接控制硬件,在微型计算机系统的开发应用和过程控制和特别受到重视. 一.数据传输指令 -------------- ...

  7. 8086汇编寄存器及指令汇总

    1   寄存器的分类 通用寄存器: ax,bx,cx,dx,(ah,al,bh,bl,ch,cl,dh,dl): sp,bp,si,di 指令寄存器: ip 标志寄存器: FR 段寄存器: cs,ds ...

  8. 80×86汇编常用指令

    80×86汇编常用指令 一.数据传送指令 1. 通用数据传送指令 简写 英文全称 执行操作 MOV move 传送 MOVSX move with sign-extend 带符号扩展传送 MOVZX ...

  9. 8086汇编学习之[BX],CX寄存器与loop指令,ES寄存器等

    同类学习笔记总结: (一).8086汇编学习之基础知识.通用寄存器.CS/IP寄存器与Debug的使用 (二).8086汇编学习之DS寄存器.SS/SP寄存器 一.汇编程序的基本格式: 1.基本格式与 ...

最新文章

  1. pcl求平面法向量_线性代数6——平面方程与矩阵
  2. 解决Android studio 非法字符的问题
  3. mysql select操作
  4. ZOJ 3829 Known Notation(贪心)
  5. 位掩码(BitMask)
  6. Review on Optical Flow Research
  7. NIO和BIO如何影响应用程序的设计-API调用
  8. java学习(167):生产者消费者问题
  9. python版本年份_Python问题:至今的年份和年份?
  10. testservice小项目总结
  11. easydarwin 安装_在Linux平台上搭建EasyDarwin,编译代码并简单部署
  12. Atitit dubbo使用总结 attilax总结 艾龙 总结 1. 概念 1 1.1. Dubbo提供的注册中心有如下几种类型可供选择: 2 1.1.1. Multicast注册中心 2 1.1
  13. 二进制、十进制和16进制对照表以及对应的字符
  14. java poi 设置时间空间_POI对Excel自定义日期格式的读取(实例代码)
  15. APK改之理(APK IDE)修改APK简单的入门教程
  16. 基于JavaEE的开放平台出租车系统_JSP网站设计_MySQL数据库设计
  17. SVN提交报错 Attempted to lock an already-locked dir
  18. c# .net 16进制转换10进制
  19. hacking8信息流邀请码第二关 代码详解
  20. 混合驱动+封装实现163邮箱登录+创建联系人+发送邮件

热门文章

  1. 做个游戏 writeup base64解码网址
  2. c#知识点——数据库
  3. PyQt5 图形界面-实现按钮监听事件
  4. CoordinatorLayout中AppBarLayout的折叠仅依靠滑动RecyclerView实现
  5. C# 学习笔记(17)操作SQL Server 上
  6. stm32阶段总结笔记一
  7. 第八周实践项目3 顺序串一些算法操作
  8. [YTU]_2914 ( xiaoping学构造函数)
  9. 10.1 分别通过函数和重载运算符来实现复数相加
  10. GPU 内存的分级综述(gpu memory hierarchy)