日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色...

發布時間:2025/4/16 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

;在屏幕中間依次顯示'a'~'z',并可以讓人看清。
;在顯示的過程中,按下Esc鍵后,改變顯示的顏色

assume cs:code

stack segment
db 128 dup(0)
stack ends

data segment
dw 0, 0
data ends

code segment
start:
;設置棧
mov ax, stack
mov ss, ax
mov sp, 128

;設置數據段
mov ax, data
mov ds, ax


;--將原來的int 9中斷例程的入口地址保存在ds:0[IP]、ds:2[CS]單元中
mov ax, 0
mov es, ax
push es:[9*4]
pop ds:[0] ;IP
push es:[9*4+2]
pop ds:[2] ;CS

;--在中斷向量表中設置新的int 9中斷例程的入口地址
mov word ptr es:[9*4], offset int9
mov es:[9*4+2], cs

;--在屏幕中央顯示字符
mov ax, 0b800h
mov es, ax
mov ah, 'a' ;ah保存'a'的ASCII
s:
mov byte ptr es:[160*12+40*2], ah
call delay
inc ah ;ah = ah + 1
cmp ah, 'z' ;
jna s ;if(ah!='z'){jmp short s}
;jna 不高于則轉義 cf=1或zf=1

;--將中斷向量表中int 9中斷例程的入口恢復為原來的地址
mov ax, 0
mov es, ax
push ds:[0]
pop es:[9*4] ;IP
push ds:[2]
pop es:[9*4+2] ;CS

;--程序返回
mov ax, 4c00h
int 21h


;--緩沖顯示字符
delay:
push ax
push dx

mov dx, 1h ;循環1000 0000次
mov ax, 0 ;(dx)=(高16位) (ax)=(低16位)
s1:
sub ax, 1 ;(低16位[0000])-(1) 借位CF=1
sbb dx, 0 ;(高16位[0001])-0-CF
cmp ax, 0
jne s1 ;jne 不等于則轉義
cmp dx, 0
jne s1 ;jne 不等于則轉義

pop dx
pop ax
ret

;--新的int 9中斷例程
int9:
push ax
push bx
push es

in al, 60h

;--int指令執行過程
; 1、取中斷類型碼
; 2、標志寄存器入棧、(IF)=0, (TF)=0
; 3、CS、IP入棧
; 4、(IP)=(n*4)、(CS)=(n*4+2)
;--iret指令執行過程
; 1、CS、IP出棧
; 2、標志寄存器出棧

;//模擬int
;a、pushf將標志寄存器的值壓棧
pushf
;b、將標志寄存器 (IF)=0, (TF)=0
pushf ;第二次入棧是為了設置flag標志寄存器中
pop bx
and bh, 11111100b ;將標志寄存器 (IF)=0, (TF)=0
push bx
popf ;popf從棧中彈出數據送入標志寄存器中
;c、執行中斷例程
call dword ptr ds:[0] ;對int指令進行模擬,調用原來的int 9中斷例程
;(IP)=ds:[0] (CS)=ds:[2]
cmp al, 1
jne int9ret

mov ax, 0b800h
mov es, ax
inc byte ptr es:[160*12+40*2+1] ;屬性增加1,改變顏色

int9ret:
pop es
pop bx
pop ax
iret
code ends
end start

?

?

總結

以上是生活随笔為你收集整理的int 9中断例程-;在屏幕中间依次显示'a'~'z',并可以让人看清。 在显示的过程中,按下Esc键后,改变显示的颜色...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。