鱼C论坛

 找回密码
 立即注册
查看: 2131|回复: 1

[争议讨论] 王爽实验十五,测试程序

[复制链接]
发表于 2012-7-16 10:13:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
;这个是在程序中测试的,没有安装部分,用的书上显示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:[9*4]
                pop ds:[0]
                push es:[9*4+2]
                pop ds:[2]        ;保存原int9h的中断地址
               
                cli
                mov word ptr es:[9*4], offset int9h
                mov es:[9*4+2], cs
                sti
               
                push es
               
                mov ax, 0b800h
                mov es, ax
                mov si, 160*12+2*40
               
                mov ch, 'a'        ;这里显示依次显示a~z
        s1:        mov es:[si], ch
                call delay
                inc ch
                cmp ch, 'z'
                jna s1
               
                pop es
               
                push ds:[0]
                pop es:[9*4]
                push ds:[2]
                pop es:[9*4+2];保存原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:[0]        ;模拟调用原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:[bx], 'A'
                add bx, 2
        loop s2
               
        ret9h:        pop es
                        pop cx
                        pop bx
                        pop ax
                        iret
               
code ends

end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-7-16 18:45:36 | 显示全部楼层
暂时 还没学到那里 先帮楼主顶起来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 14:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表