zoukankan      html  css  js  c++  java
  • 用中断例程完成loop指令的功能【安装中断例程,设置中断向量表】

    ;问题:用中断例程完成loop指令的功能

    ;应用举例:在屏幕中断显示80个'!'?

    1.asm

    ;安装中断例程

    assume cs:code
    
    code segment
    start:
      mov ax, cs
      mov ds, ax
      mov si, offset lp  ;ds:[si] 只指向源地址
      mov ax, 0
      mov es, ax
      mov di, 200h   ;es:[di] 指向目标地址
      mov cx, offset lpend - offset lp ;cx为传输长度
      cld    ;传输方向为正
      rep movsb  ;rep 为cx!=0 继续 拷贝[movsb]
      
      ;设置7ch中断例程的入口地址
      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
      
     
     ;7ch中断例程
     lp:
       push bp
       mov bp, sp
       dec cx
       jcxz lpert
       add ss:[bp+2], bx ;ss:[bp+2] 为 int 7ch 下一条指令的第一个字节 地址
           ;bx为 s标号 到 int 7ch 下一条指令的第一个字节 地址 的偏移地址
     lpert:
       pop bp
       iret
     lpend:
       nop
       
    code ends
    end start

    2.asm

    ;实现loop

    assume cs:code
    
    code segment
    start:
      mov ax, 0b800h
      mov es, ax
      mov di, 160*12
      mov bx, offset s - offset se  ;设置从标号se到s的转移位移
      mov cx, 80
      
     s:
      mov byte ptr es:[di], '!'
      mov byte ptr es:[di+1], 0ah
      add di, 2
      ;loop s
      int 7ch        ;如果(cx)!=0,转移到标号s处
     se:
      nop
      
      mov ax, 4c00h
      int 21h
    
    code ends
    end start
  • 相关阅读:
    ABP记录被删除调用Repository.Get报错
    C# 中在对象后面跟“?” 以及在类型后面跟问号
    list转table
    ling groupby多字段分组统计
    linq一堆多再对多
    ABP下mvc的libs还原
    EF数据迁移
    ABP密码规则设置
    ABP中table时间格式化
    ABP读取appseting.json
  • 原文地址:https://www.cnblogs.com/qintangtao/p/2871144.html
Copyright © 2011-2022 走看看