水之境界 发表于 2012-7-16 10:13:27

王爽实验十五,测试程序

;这个是在程序中测试的,没有安装部分,用的书上显示a~z字母,按esc改变颜色的测试程序。课本p276
;

assume cs:code

stack segment
        db 128 dup (0)
stack ends

data segment
        dw 0,0,0,0
data ends

code segment
start:        mov ax, stack
                mov ss, ax
                mov sp, 128
               
                mov ax, data
                mov ds, ax
               
                mov ax, 0
                mov es, ax
               
                push es:
                pop ds:
                push es:
                pop ds:        ;保存原int9h的中断地址
               
                cli
                mov word ptr es:, offset int9h
                mov es:, cs
                sti
               
                push es
               
                mov ax, 0b800h
                mov es, ax
                mov si, 160*12+2*40
               
                mov ch, 'a'        ;这里显示依次显示a~z
        s1:        mov es:, ch
                call delay
                inc ch
                cmp ch, 'z'
                jna s1
               
                pop es
               
                push ds:
                pop es:
                push ds:
                pop es:;保存原int9h的中断地址       
               
                mov ax, 4c00h
                int 21h

delay:        push ax
                push dx
               
                mov dx, 500h
                mov ax, 0
        ly:        sub ax, 1
                sbb dx, 0
                cmp ax, 0
                jne ly
                cmp dx, 0
                jne ly
               
                pop dx
                pop ax
                ret
               
int9h:        push ax
                push bx
                push cx
                push es
               
                in al, 60h        ;接收键盘输入
               
                pushf
                call dword ptr ds:        ;模拟调用原int9h程序
               
                cmp al, 9eh        ;不是是‘a’断码就结束,是就执行写A操作
                jne ret9h
               
                mov ax, 0b800h
                mov es, ax
                mov bx, 0
                mov cx, 2000
        s2:        mov byte ptr es:, 'A'
                add bx, 2
        loop s2
               
        ret9h:        pop es
                        pop cx
                        pop bx
                        pop ax
                        iret
               
code ends

end start

LLCK910 发表于 2012-7-16 18:45:36

暂时 还没学到那里 先帮楼主顶起来
页: [1]
查看完整版本: 王爽实验十五,测试程序