Assembly language 实验15
实验15assume cs:code, ss:stack
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 si, offset int9 ; ds:si指向源地址
mov ax, 0
mov es, ax
mov di, 204H ; es:di指向目的地址
mov cx, offset int9end-offset int9 ; 传输长度
cld ; 传输方向为正
rep movsb
push es:
pop es:
push es:
pop es:
cli
mov word ptr es:, 204H
mov word ptr es:, 0
sti
mov ax, 4c00H
int 21H
; ****************************************
; 新的int 9中断历程
; 在DOS下, 按下"A"键后, 除非不松开, 否则显示满屏幕的"A", 其它情况正常处理
int9:
push ax
push bx
push cx
push es
in al, 60H ; 从键盘读取输入字符
pushf
call dword ptr cs: ; 使用原来的int 9中断处理一般字符
cmp al, 9EH ; 判断按下A键后是否松开
jne int9ret
mov ax, 0b800H
mov es, ax
mov bx, 0 ; es:bx为显示区首地址
mov cx, 2000 ; 满屏可显示2000个字符
s:
mov byte ptr es:, 'A'
add bx, 2
loop s
int9ret:
pop es
pop cx
pop bx
pop ax
iret
int9end:
nop
; ****************************************
code ends
end start
**** Hidden Message *****
这是?!!!!!!!!!!! {:5_91:}{:5_91:}求分享 {:5_107:}我是来打酱油的 123 11111 过来看看 6666666666666666666 1
页:
[1]