汇编程序51:检测点15.1(2)

 1 assume cs:code
 2 ;安装程序,接受按键事件,变化颜色
3 code segment
4 start:
5 mov ax,cs
6
mov ds,ax 7 mov si,offset sub1 8 mov ax,0020h 9 mov es,ax 10 mov di,0 11 mov cx,offset sub2 - offset sub1 12 cld 13 rep movsb ;复制程序 14 15 mov ax,0 16 mov es,ax 17 mov word ptr es:[7ch*4],200h 18 mov word ptr es:[7ch*4+2],0 19 mov ax,4c00h 20 int 21h ;入口地址附加 21 sub1: 22 push ax 23 push bx 24 push es 25 26 in al,60h 27 28 pushf 29 call dword ptr ds:[0] 30 cmp al,1 31 jne int9ret 32 mov ax,0b800h 33 mov es,ax 34 inc byte ptr es:[12*160+40*2+1] 35 36 int9ret: 37 pop es 38 pop bx 39 pop ax 40 iret 41 sub2: 42 nop 43 code ends 44 45 end start

 

 1 assume cs:code
 2 ;测试程序
 3 stack segment
 4     db 128 dup(0)
 5 stack ends
 6 
 7 data segment
 8     dw 0,0
 9 data ends
10 
11 code segment
12     start:
13           mov ax,stack
14           mov ss,ax
15           mov sp,128
16 
17           mov ax,data
18           mov ds,ax
19 
20           mov ax,0
21           mov es,ax
22 
23           push es:[9*4]
24           pop ds:[0]
25           push es:[9*4+2]
26           pop ds:[2]
27 
2x cli ;设置IF为0,禁止可屏蔽中断执行,这里指键盘中断 28 mov word ptr es:[9*4],200h 29 mov word ptr es:[9*4+2],0
2x sti ;设置IF为1,允许可屏蔽中断执行,这里指键盘中断
30 31 mov ax,0b800h 32 mov es,ax 33 mov ah,'a' 34 s: 35 mov es:[12*160+40*2],ah 36 call delay 37 inc ah 38 cmp ah,'z' 39 jna s 40 41 mov ax,0 42 mov es,ax 43 44 push ds:[0] 45 pop es:[9*4] 46 push ds:[2] 47 pop es:[9*4+2] 48 49 mov ax,4c00h 50 int 21h 51 52 delay: 53 push ax 54 push dx 55 mov dx,10h 56 mov ax,0 57 s1: 58 sub ax,1 59 sbb dx,0 60 cmp ax,0 61 jne s1 62 cmp dx,0 63 jne s1 64 pop dx 65 pop ax 66 ret 67 int 7ch 68 69 code ends 70 71 end start

 

posted on 2018-02-04 20:20  叶倾仙  阅读(263)  评论(0编辑  收藏  举报

导航