精华内容
下载资源
问答
  • int指令

    2018-11-12 16:23:00
    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。 1)取中断类型码n; 2)标志寄存器入栈 ,IF=0, TF=0; 3) CS,IP入栈; 4)(IP)=(n*4), (CS)=(n*4+2)。 int指令的最终功能和call指令相似,都是...

    int指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。

    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。

    1)取中断类型码n;

    2)标志寄存器入栈 ,IF=0, TF=0;

    3) CS,IP入栈;

    4)(IP)=(n*4), (CS)=(n*4+2)。

    int指令的最终功能和call指令相似,都是调用一段程序。

     

    问题一:编写、安装中断7ch的中断例程。

    功能:求一word型数据的平方。

    参数:(ax)=要计算的数据。

    返回值: dx、ax中存放结果的高16位和低16位。

    应用举例:求2*3456

    assume cs:code
    
    code segment
    
    start:
                     mov ax, 3456
                     int 7ch
                     add ax, ax
                     adc dx, dx
        
                     mov ax, 4c00h
                     int 21h
    code ends
    end start

    我们需要做一下3部分工作。

    1)编写实现求平方功能的程序

    2) 安装程序,将其安装在0:200处

    3)设置中断向量表,将程序的入口地址保存在7ch表项中,使其成为中断7ch的中断例程。

    安装程序如下。

    assume cs:code
    
    
    code segment
    
    start:
                        mov ax, cs
                        mov ds, ax
                        mov si, offset  sqr
                        mov ax, 0
                        mov es, ax
                        mov di, 200h
                        mov cx, offset sqrend-offset sqr
                        cld
                        rep  movsb
    
                        mov ax, 0
                        mov es, ax
                        mov word ptr es:[7ch*4], 200h
                        mov word ptr es:[7ch*4+2], 0
    
                        mov ax, 4c00h
                        int 21h
    
    sqr:
                         mul ax
                         iret
    
    sqrend:
                        nop
    
    code ends
    end start

     

    问题二:编写、安装中断7ch的中断例程。

    功能:将一个全是字母,以0结尾的字符串,转化成大写。

    参数: ds:si指向字符串的首地址

    应用举例:将data段中的字符串转化成大写。

    assume cs:code
    
    data segment
             db  'conversation',0
    data ends
    
    code segment
    
    start:
                   mov ax, data
                   mov ds, ax
                    mov si, 0
                    int 7ch
    
                   mov ax, 4c00h
                   int 21h
    
    code ends
    end start
    
    安装程序如下。
    assume cs:code
    
    code segment
    
    start:
                  mov ax, cs
                  mov ds, ax
                  mov si, offset  capital
                  mov ax, 0
                  mov es, ax
                  mov di, 200h
                  mov cx, offset capitalend-offset capital
                  cld
                  rep movsb
    
    
                  mov ax, 0
                  mov es, ax
                  mov word ptr es:[7ch*4], 200h
                  mov word ptr es:[7ch*4+2], 0
                  mov ax, 4c00h
                  int 21h
    
    capital:
                   push cx
                   push si
    
    change:
                    mov cl, [si]
                    mov ch, 0
                    jcxz  ok
                    and byte ptr [si], 11011111b
                    inc si
                    jmp short change
    
    
    ok:
                    pop si
                    pop cx
                    iret
    
    capitalend:
                      nop
    
    code ends
    end start

     

    转载于:https://www.cnblogs.com/gkp307/p/9947198.html

    展开全文
  • INT指令

    2021-06-06 14:00:27
    int和iret配合使用, call和ret指令配合使用。 有了函数有了过程就有了栈,因为函数有局部变量。 BIOS和DOS中断例程的安装过程 BIOS:base input output system 基础输入输出系统 DOS:读内存 刷新内存 检查内存 ...

    调用中断程序
    int 0
    成对编程。

    CPU执行int 7ch
    pushf
    push CS
    push IP
    执行iret
    pop IP
    pop CS
    popf
    int和iret配合使用, call和ret指令配合使用。
    有了函数有了过程就有了栈,因为函数有局部变量。

    BIOS和DOS中断例程的安装过程

    • BIOS:base input output system 基础输入输出系统
    • DOS:读内存 刷新内存 检查内存
      在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    展开全文
  • 关于int指令

    2019-09-27 20:36:38
    指令“int n”的执行过程: 1】获取中断类型码n 2】标志寄存器入栈,IF、TF置0 3】cs、ip入栈 4】ip=4*n;cs=4*n+2; 总之,int指令的作用和call指令相似,都是用来调用一段程序; int指令...
    1.关于int指令
    格式:int n
        n为中断类型码;
    作用:
        调用n号中断程序;
     
    指令“int n”的执行过程:
        1】获取中断类型码n
        2】标志寄存器入栈,IF、TF置0
        3】cs、ip入栈
        4】ip=4*n;cs=4*n+2;
     
    总之,int指令的作用和call指令相似,都是用来调用一段程序;
    int指令专门用来调用中断程序;
     
    2.用中断例程模拟loop指令
    loop s 是循环指令,作用是如果cx不为0,则跳转到s标号处;
    分析:
        loop指令需要两个条件:循环次数、到标号s处的位移;
        可以将这两个条件作为参数,cx来存放循环次数,bx存放位移;
        到标号处的位移计算公式为:位移=调用中断例程的下一条指令处的偏移 - 标号s处的偏移;
        将计算得到的偏移量存入bx,作为参数传递到中断例程中;
        为了实现转移到标号s处,需要修改cs:ip;
        cs:ip的修改可以通过iret指令来实现,在中断例程调用iret返回时将用栈中的值来设置cs:ip,可以将栈中ip的值加上bx存放的偏移量,即为s处的偏移地址;
     
    例如:利用中断实现循环,打印80个感叹号“!”
    业务代码:
    assume cs:code
    code segment
        start:    mov ax,0b800h
                mov es,ax
                mov di,160*12                    ;在屏幕12行显示
                
                mov bx,offset s-offset se        ;bx存放偏移量,作为参数传入中断处理程序
                mov cx,3                        ;循环次数                        
            s:    mov byte ptr es:[di],"!"        ;输入感叹号
                add di,2
                int 7ch                            ;调用7c处的中断处理程序,作用是循环,如果cx != 0,跳到标号s处    
            se:    nop
            
            mov ax,4c00h
            int 21h
    code ends
    end start
    安装中断函数:
    assume cs:code
    code segment
        start:    mov ax,code            ;利用movsb来安装中断函数
                mov ds,ax
                mov si,offset xh    ;设置ds:[si]的值
                
                mov ax,0
                mov es,ax
                mov di,200h            ;设置es:[di]的值,用来将中断函数安装道0000:0200处
                
                mov cx,offset xhe-offset xh    ;中断函数的字节数由编译器计算
                cld                    ;df标志位值0,表示正向复制
                rep movsb            ;循环复制
                            
                mov word ptr es:[4*7ch],200h    ;修改中断向量表
                mov word ptr es:[4*7ch+2],0
                
                mov ax,4c00h
                int 21h
                
        xh:        push bp            
                
            s:    dec cx                ;循环一次cx减一
                jcxz ok                ;如果cx=0则结束程序
                mov bp,sp            ;获取栈中ip的值,并将其加上参数bx传过来的偏移量,已达到跳转的目的
                add [bp+2],bx    
            
            ok:    pop ax
                iret
        xhe:    nop                    ;中断函数结束
        
    code ends
    end start
    结果:
     
    3.BIOS和DOS提供的中断例程
    关于bios:
        bios是输入输出系统的英文缩写;
        是系统板rom中存放的一套程序;
    bios的作用:
        1】硬件系统的检测和初始化程序
        2】外部中断和内部中断例程
        3】对硬件设备进行io操作的中断例程
        4】其它和硬件系统相关的中断例程
     
    bios和dos提供的中断例程中包含了许多子程序,在编程时可以用int命令来调用;
     
    1)bios和dos中断例程的安装
    自己编写的中断处理程序安装过程:
        1】将中断程序放入安装程序
        2】运行安装程序,将中断程序安装到指定内存区,该内存区不会被其它程序修改;
     
    对于bios和dos中的中断例程的安装过程如下:
        1】开机后,cpu通电,初始化cs:ip=0FFFFH:0;使得cpu从0FFFFH:0处的内存单元处开始执行程序;
            0FFFFH:0处有一条跳转指令,cpu执行该指令后跳转去执行bios中的硬件系统检测和初始化程序;
        2】初始化程序将bios中断例程的入口地址登记再中断向量表中;
            因为bios中断例程是固化到ROM中的程序,会一直存在于内存中,所以只需要修改中断向量表即可;
        3】硬件系统检测和初始化完成后,调用int 19h,进行操作系统引导,从此将计算机给操作系统控制;
        4】操作系统启动后,例如dos,除了完成其它工作外,还会将它所提供的中断例程装入内存,并建立相应的中断向量;
     
    2)关于bios中断例程
    例如:int 10h 时bios提供的中断例程;
    作用是和屏幕输出有关;
    ah用来传递调用的子程序编号;
     
    调用int 10h在5行列显示字符‘a’:
    assume cs:code
    code segment
        start:    mov ah,2    ;参数ah用来传递调用的子程序,2号子程序为放置光标
                mov bh,0    ;第0页,参数bh传递页数
                mov dh,5    ;第5行,dh放行号
                mov dl,12    ;第12列,dl放列号
                int 10h        ;调用中断例程
                
                mov ah,9    ;10h例程的9号子程序,用来在光标位置显示字符
                mov al,'a'    ;目标字符
                mov bl,11001010b    ;字符的颜色属性
                mov bh,0            ;第0页
                mov cx,3            ;字符重复3次
                int 10h                ;调用中断例程
                
                mov ax,4c00h;        退出程序
                int 21h
    code ends
    end start
    结果:
     
    3)关于dos中断例程
    例如:int 21h 中断例程是由dos提供;
    ah用来传送子程序编号;
    比如 4ch号子程序用来返回程序;
    mov ah,4ch
    mov al,0
    int 21h
    相当于
    mov ax,4c00h
    int 21h
     
    int 21h的第9号子程序可实现在光标处输出字符串;
    ds:dx执行字符串,字符串以美元符“$”结尾;
    例如:实现输出"hello world!"
    assume cs:code,ds:data
     
    data segment
        db "hello world","$"
    data ends
     
    code segment
        start:mov ax,data
            mov ds,ax
            mov dx,0
            mov ah,9
            int 21h
        
            mov ax,4c00h
            int 21h
    code ends
    end start
    结果:
     
     
     

    转载于:https://www.cnblogs.com/ShiningArmor/p/11214090.html

    展开全文
  • 13 int指令

    2018-09-23 10:51:28
    1、中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断...CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下: (1)取出中断类型码n; (2)标...

    1、中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程,我们接下来聊一聊另一种重要的内中断,由int指令引发的中断

     

    2、int指令

    int指令的格式为:int n,n为中断类型码,他的功能是引发中断过程

    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下:

    (1)取出中断类型码n;

    (2)标志寄存器入栈,IF=0,TF=0;

    (3)CS、IP入栈;

    (4)IP=n*4,CS=n*4+2

    从此处去执行n号中断处理程序,我们可以在程序中使用int指令调用任何一个中断的中断处理程序

    int指令的最终功能和call指令相似,都是调用一段程序

     

    3、BIOS和DOS所提供的中断例程

    在系统板的ROM中存放着一套程序,成为BIOS(基本输入输出系统),BIOS中主要包含下面几部分内容

    (1)硬件系统的检测和初始化程序;

    (2)外部中断和内部中断的中断例程;

    (3)用于对硬件设备进行I/O操作的中断例程;

    (4)其他和硬件系统相关的中断例程。

    操作系统DOS也提供了中断例程,从操作系统的角度看,DOS的中断例程就是操作系统向程序员提供的编程资源

    BIOS和DOS在所提供的中断例程中包含了许多子程序,这些子程序实现了程序员在编程的时候经常需要用到的功能。程序员在编程的时候,可以用int指令直接调用BIOS和DOS提供的中断例程来完成某些工作

    和硬件设备相关的DOS例程中,一般都调用了BIOS的中断例程

     

    4、BIOS和DOS中断例程的安装过程

    (1)开机后,CPU一加电,初始化(CS)=0FFFFH,IP=0,自动从FFFF:0单元开始执行程序。FFFF:0处有一条跳转指令,CPU执行该指令后,转去执行BIOS中的硬件检测和初始化程序

    (2)初始化程序将建立BIOS所支持的中断向量,即将BIOS提供的中断例程的入口地址等记载中断向量表中。注意,对于BIOS所提供的中断例程,只须将入口地址登记在中断向量表中即可,因为它们是固化到ROM中的程序,一直在内存中存在

    (3)硬件系统检测和初始化完成后,调用int 19h 进行操作系统的引导。从此将计算机交由操作系统控制

    (4)DOS启动后,除完成其他工作外,还将它所提供的中断例程装入内存,并建立相应的中断向量

     

    展开全文
  • 13-int指令

    2021-01-07 19:44:56
    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下: 取中断类型码n 标志寄存器入栈,IF=0,TF=0 CS、IP入栈 (IP)=(n*4), (CS)=(n*4+2) 从此处转去n号中断的中断处理程序。 可以在程序中使用int...
  • 汇编语言-int指令

    千次阅读 2020-03-15 19:43:45
    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。 取中断类型码n; 标志寄存器入栈,IF=0,TF=0; CS,IP入栈; (IP)=(N4),(CS)=(N4+2) 从此转去执行n号中断的中断处理程序。 int指令的最终...
  • 汇编语言--int指令

    万次阅读 2020-09-13 16:51:16
    int指令的格式为:int n ,n为中断类型码,它的功能是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程 在程序中使用int指令调用任何一个中断的中断处理程序(中断例程) 编写供应用程序调用...
  • int指令和端口

    2019-08-14 15:23:48
    执行过程: 取出中断类型码n 标志寄存器入栈,IF=0,TF=0 CS、IP入栈 (IP)=(n*4)、(CS)=(n*4+2) int可以调用任何中断程序。 int指令的最终功能和call类似,都是调用一段程序。 系统将一些具有一定...
  • int指令、iret指令

    2013-01-22 10:54:00
    CPU执行int n,相当于引发一个n号中断的中断的中断过程,执行过程如下: 1、取中断类型码 2、标志寄存器入站,IF=0,TF=0 3、CS,IP入栈 4、(IP)=(n*4), (CS)=(n*4+2)    iret指令  功能:  用栈中的...
  • 1.写在前面 前面我介绍了内中断的一些知识,通过修改...CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下: 取中断类型码n 标志寄存器入栈,IF=0,TF=0; CS、IP入栈 (IP)=(n4),CS=(n4+2) 从此处转
  • 第十三章 int指令 中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,...2.CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下 1.取中断类型码 2.标志寄存器入栈,if=0,tf=
  • 第13章 int 指令

    2019-05-03 17:39:40
    int n指令执行过程如下: (1) 取得中断类型码n; (2) 标志寄存器入栈,TF、IF设置为0; (3) CS、IP入栈; (4) (IP)=(n∗4),(CS)=(n∗4+2)(IP)=(n * 4), (CS)=(n * 4+2)(IP)=(n∗4),(CS)=(n...
  • int指令---汇编学习笔记

    万次阅读 2018-08-28 22:46:31
    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下。 取中断类型码n 标志寄存器入栈,IF=0、TF=0 CS、IP入栈 (IP)=(n∗4),(CS)=(n∗4+2)(IP)=(n∗4),(CS)=(n∗4+2)(IP)=(n*4)...
  • 第13章 int指令

    2011-10-27 11:39:00
    第13章 int指令 中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。 本章讲解由int指令引发的中断。 13.1 int指令 Int 指令的格式为:...
  • 1.1 int指令 由int 指令引发的中断是一种重要的内中断。 格式: int n //相当于引发一个n号中断的过程,最终功能和call指令相似,都是调用一段程序。 取中断类型码n 标志寄存器入栈,并IF=0,TF=0 //TF=0使得避免...
  • 第 13章 int 指令

    2021-03-28 16:01:15
    CPU执行 int n 指令,相当于引发一个 n 号中断 取中断类型码n 标志寄存器入栈,IF=0,TF=0; CS,IP入栈; IP = (n*4), (CS) = (n*4+2) 示例程序 ------------------------------------------------- assume cs...
  • 汇编第十三节-int指令

    2017-11-27 23:09:30
    1.int指令:int指令格式:int n ,n为中断类型码,功能:引发中断过程。 CPU执行int n指令,相当于引发一个n号中断的中断过程。a.取中断类型码n b.标志寄存器入栈,IF=0,TF=0; c.CS,IP入栈 d.(IP)=(n*4),(CS)=(n*4+2...
  • 第十三章 int指令 13.1 int指令 int 指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。 CPU执行int n指令,相当于引发一个n号中断过程过程如下: (1)取中断类型码n; (2)标志寄存器入栈,IF = 0...
  • 汇编学习--7.16--int指令

    万次阅读 2012-07-16 13:04:04
    int指令 中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程。...CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下
  • int指令(学习汇编)

    2014-08-11 21:51:00
    CPU执行int n指令,相当于引发一个n号中断的中断过程,执行过程如下: 1)取中断类型码n; 2)标志寄存器入栈,IF=0,TF=0; 3)CS、IP入栈 4)(IP)=(n*4),(CS)=(n*4+2) 从此处转去执行n号中断的中断处理...
  • 执行过程如下: (1) 取得中断类型码n; (2) 标志寄存器入栈,TF、IF设置为0; (3) CS、IP入栈; (4) (IP)=(n * 4),(CS)=(n * 4+2) 13.2 编写供应用程序调用的中断例程 13.3 对int、iret 和栈的深入理解 ...
  • n为中断类型码,它的功能是引发中断过程,执行过程如下: 1,取中断类型码 n 2,标志寄存器入栈,IF=0,TF=0 3,CS,IP入栈 4,(IP)=(n乘4),(CS)=(n乘4+2) 从此处转去执行n号中断的中断处理程序 可以在程序中使用int...
  • 执行过程: 1、取中断类型码n 2、标志寄存器入栈,IF=0 TF=0 3、CS、IP入栈 4、(IP)=(n*4) ​ (CS)=(n*4+2) 从此转去执行n号中断的中断处理程序 assume cs:code code segment start: mov ax,0...
  • 8086汇编复习4 - int指令 - 使用emu8086

    千次阅读 2020-03-01 23:42:26
    int指令 中断信息可以来自CPU的内部和外部;...执行过程如下: 1)取中断类型码n; 2)标志寄存器入栈,IF=0, TF=0; 3)CS、IP入栈; 4)n*4赋值给IP寄存器;(n*4+2)赋值给CS寄存器; ...
  • 转载必须注明出处,违者必究。... ☞int指令简介 int指令引发的中断,是另一种重要的内中断(当然外...CPU执行 int n指令,引发的n号中断的中断过程。 (1). 取中断类型码n; (2). 标志寄存器入栈,IF=0,TF=0; ...
  • 第十三章 int指令

    2012-03-18 16:00:00
    1、int指令:CPU执行int n,相当于引发一个n号中断的中断过程。因此,一般情况下,系统将一些具有一定功能的子程序,以中断处理程序的方式提供给应用程序调用。 2、int和iret指令配合跟call和ret指令相似。 3、...
  • 其实这一章和第十二章的内容是差不多的,只不过这一章着重讲述了int指令引发的内中断。 1. int 指令格式  int n ; n为中断类型码 2. cpu 执行 int 指令的过程  cpu执行 int 指令,相当于引发一个n号中断的中断过程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 456
精华内容 182
关键字:

int指令执行过程