美文网首页
8086汇编(42)int指令

8086汇编(42)int指令

作者: 迷心迷 | 来源:发表于2019-04-05 10:30 被阅读0次

    int指令

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

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

    1)取中断类型码n;

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

    1. CS,IP入栈;

    4)(IP)=(n4), (CS)=(n4+2)。

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

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

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

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

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

    应用举例:求2*34562 。

    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)编写实现求平方功能的程序

    1. 安装程序,将其安装在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
    

    相关文章

      网友评论

          本文标题:8086汇编(42)int指令

          本文链接:https://www.haomeiwen.com/subject/olbqiqtx.html