对15.4节程序的修改版
首先说下为什么要修改这个程序,我用的是WIN7用书本上直接往显存里写数据的方法不能再屏幕上输出热河东西,但是呢,用BIOS的10号中断就可使,所以该了一下这个程序。代码是这样的(P280)
ASSUME cs:Code,ds:Data
Data SEGMENT
DW 0,0
Data ENDS
Code SEGMENT
Start:
mov ax,Data
mov ds,ax
mov ax,0H
mov es,ax
push es:
pop ds:
push es:
pop ds:
cli
mov WORD PTR es:,OFFSET Int9h
mov WORD PTR es:,cs
sti
mov ah,2
mov bh,0
mov dh,12
mov dl,40
int 10H
mov ah,9
mov bh,0
mov bl,2
mov al,'A'
S:int 10H
inc al
call Sleep
cmp al,'Z'
jna S
push ds:
pop es:
push ds:
pop es:
mov ax,4c00H
int 21H
Sleep:
push ax
push dx
mov ax,0
mov dx,0ffffH
S1: sub ax,1
sbb dx,0
cmp ax,0
jne S1
cmp dx,0
jne S1
pop dx
pop ax
ret
Int9h:
push ax
push cx
in al,60H
pushf
pushf
pop cx
and ch,11111100B
push cx
popf
call DWORD PTR ds:
cmp al,1
jne Int9hret
inc bl
Int9hret:
pop cx
pop ax
iret
Code ENDS
END Start
但是这个程序有一点非常奇怪,就是本来要求是在12行40列显示A-Z的,但是呢,程序运行的时候却足足显示了3行的字母,请高手指教这是为什么呢?
页:
[1]