汇编学习历程(按键中断劫持)
2013-04-23 23:03
302 查看
assume cs:code,ds:data,ss:stack code segment start: mov ax,data mov ds,ax mov ax,stack mov ss,ax mov sp,16 ;set about segment mov ax,0 mov es,ax mov ax,word ptr es:[36] mov ds:[0],ax mov ax,word ptr es:[38] mov ds:[2],ax ;save interrupted address mov word ptr es:[36],offset key_dispose mov word ptr es:[38],cs ;exchenge interrupted address mov ax,0b800h mov es,ax mov al,'a' flag: mov byte ptr es:[7D0h],al inc al call sub_empty cmp al,'z' je flag jb flag ;echo a char mov ax,0 mov es,ax push ds:[0] pop es:[36] push ds:[2] pop es:[38] ;recover interrupted address mov ax,4c00h int 21h ;program return key_dispose: push ax push bx push es ;save segment in al,60h ;rede key_virtual pushf pushf pop bx and bh,11111100b push bx popf call dword ptr ds:[0] ;imitate iret cmp al,1 ;if esc pressdown jne exit mov ax,0b800h mov es,ax inc byte ptr es:[7d1h] exit: pop es pop bx pop ax iret sub_empty: ;empty loop push ax push cx pushf mov ax,9000h outer: dec ax mov cx,0FFFh core: nop nop loop core cmp ax,0 ja outer popf pop cx pop ax ret code ends stack segment dw 8 dup(0) stack ends data segment db 'this is a empty!' data ends end start
相关文章推荐
- 汇编学习历程(键盘中断劫持)
- 汇编学习历程(int中断学习)
- 内中断04 - 零基础入门学习汇编语言63
- 汇编语言学习第十二章-内中断
- 一步步学习汇编(13)之中断(破解软件的必修课四)
- 内中断04 - 零基础入门学习汇编语言63
- NanoPi—M1(H3)———基于该平台的一个内核中的按键中断程序开发历程
- 外中断(学习汇编)
- 嵌入式Linux驱动学习之路(十一)按键驱动-中断机制
- STM32CubeMX学习教程之三:GPIO输入之利用SysTick中断给按键去抖
- 【学习笔记】zedboard 按键中断
- 内中断03 - 零基础入门学习汇编语言62
- 外中断03 - 零基础入门学习汇编语言71
- Linux驱动学习之:按键中断驱动
- 创龙TMS320C6748开发板———按键中断学习
- 通过 按键 学习 中断
- 汇编学习--7.16--外中断
- 嵌入式linux学习笔记 之 按键与中断
- 【学习笔记】zedboard上freertos 按键中断
- 内中断03 - 零基础入门学习汇编语言62