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码大概是一个问号;在屏幕显示一个问号;


    


 

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值