• 一个简单的中断程序


    在Masm for Windows 下调试:

    DATAS SEGMENT

    ;此处输入数据段代码

    DATAS ENDS

    STACKS SEGMENT

    ;此处输入堆栈段代码

    STACKS ENDS

    CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

    START:

    MOV AX,DATAS

    MOV DS,AX

    ;系统默认在内存0000:000到0000:03FE专门存放中断向量表

    ;第一步:把中断向量表中0号表项的内容进行修改,

    ;指向我们自己指定的中断处理程序的入口地址

    mov ax,0

    mov ds,ax

    ;中断向量表每个表项占四个字节,低字节放偏移地址,高字节放段地址

    mov word ptr ds:[0],0200h

    mov word ptr ds:[2],0

    ;第三步,把自己写的0号中断处理程序拷贝到中断向量表在0号表项

    ;所指向的内存地址中0000:0200

    ;设置程序的源地址,源地址由DS:SI组成,目的地址由ES:DI组成

    mov ax,cs

    mov ds,ax

    mov si,offset int0    ;程序所在地址,即源地址:ds:si

    mov ax,0

    mov es,ax            ;设置目的地址

    mov di,200h

    mov cx,offset int0end-offset int0

    ;CLD指令设置数据拷贝方向是从低字节向高字节,si,di自动增量,STD相反

    cld

    rep movsb

    ;第四步,利用代码自动引发0号中断处理程序

    mov ax,100h

    mov bh,1

    div bh    ;除数为1,产生除法溢出错误,中断!调用自己写的中断程序

    ;第二步:编写自己的中断处理程序,实现在屏幕中央显示字符串的功能

    int0:jmp short int0start    ;这行代码占两个字节

        db "I am student !"

    int0start:mov ax,0b800h

    mov es,ax    ;配置显存首地址

    ;要把"I am student !"一个拷贝到显存地址空间中

    mov ax,cs    ;把代码段中的内容送到数据段当中去

    mov ds,ax    ;0中断程序没区分代码段和数据段

    mov si,202h    ;因jump short int0start占两字节

    mov di,12*160+36*2    

    ;一个屏幕最大是24行、80列,每行80个字,36是中央偏左一点

    mov cx,14    ;"I am student !" 点14个字节

        ;---------字体属性----------

        ;| 7 6 5 4 3 2 1 0 |

        ;| B L R G B I R G B |

        ;| 闪烁 背景色 高亮 前景色 |

        ;---------------------------

        mov ah,10100100b ;绿底红字

    s:mov al,byte ptr ds:[si]    ;将第一个字符存到al中

        mov es:[di],al    ;拷贝字符

        mov es:[di+1],ah ;拷贝字符属性

        inc si        ;源地址指针后移1个字符

        add di,2    ;显存地址加2字节

        loop s

    MOV AH,4CH

    INT 21H

    int0end:nop ;nop是空操作指令,占一个字节

    CODES ENDS

    END START

  • 相关阅读:
    i++和++i
    MySQL 5.6 for Windows 解压缩版配置安装-----------有点难看懂
    mysqld install报错:Install/Remove of the Service DeniedMy/Authentication plugin 'caching_sha
    mysql中,执行mysqld –install命令 、net start mysql命令出错的解决办法
    Mysql 服务无法启动 服务没有报告任何错误------------------mysql安装步骤
    mysql数据库安装步骤
    对io进行分流
    JDBC、mybatis、hibernate连接数据库
    当前电商行业的介绍
    MySQL常见常用的SQL优化
  • 原文地址:https://www.cnblogs.com/luowei010101/p/1982389.html
Copyright © 2020-2023  润新知