zoukankan      html  css  js  c++  java
  • 王爽《汇编语言》(第三版)实验15解析

    安装新的 int 9 中断例程
    安装一个新的 int 9 中断例程,功能: 在DOS下,按下“A”键后,除非不再松开,如果松开,就显示满屏幕的“A”,其他的键照常处理。
    提示:断码=通码+80H

    代码如下

    assume cs:code 
    
    stack segment
    	db 128 dup (0)
    stack ends
    
    code segment
    start:	mov ax,stack
    		mov ss,ax
    		mov sp,128
    		
    		push cs
    		pop ds
    		
    		mov ax,0
    		mov es,ax
    		
    		mov si,offset int9	; 设置ds:si指向源地址
    		mov di,204h			; 设置es:di指向目的地址
    		mov cx,offset int9end-offset int9	; 设置cx为传输长度
    		cld	 			; 正方向传输
    		rep movsb
    		
    		push es:[9*4]
    		pop es:[200h]
    		push es:[9*4+2]
    		pop es:[202h]
    		
    		cli
    		mov word ptr es:[9*4],204h
    		mov word ptr es:[9*4+2],0
    		sti
    		
    		mov ax,4c00h
    		int 21h
    		
    	int9:
    		push ax
    		push bx
    		push cx
    		push es
    		
    		in al,60h
    		
    		pushf 
    		call dword ptr cs:[200h]	; 当此中断例程执行时(CS)=0
    		
    		cmp al,1Eh+80h	; 	‘A’的断码为1eh+80h
    		jne int9ret
    		
    		mov ax,0b800h
    		mov es,ax
    		mov bx,0
    		mov cx,2000
    	s:	mov byte ptr es:[bx],'A'
    		add bx,2
    		loop s
    		
    	int9ret:
    		pop es
    		pop cx
    		pop bx 
    		pop ax
    		iret
    	int9end:
    		nop
    	
    code ends
    end start
    
  • 相关阅读:
    选择器的用处
    全栈工程师基础知识与笔记
    9.13日笔记
    9.12笔记
    9.11Css
    学习笔记
    9.10HTLM
    redis和memcached的区别(总结)
    OO第四次博客作业
    OO第三次博客作业
  • 原文地址:https://www.cnblogs.com/nojacky/p/13905860.html
Copyright © 2011-2022 走看看