博文
[置顶] 鼠标键盘监控{汇编代码,初学者}(2007-10-05 13:37:00)
摘要:;----------------------------------------------------------------------------------; 鼠标, 键盘和显示设备的汇编语言操作;; 在DOS系统或者命令行中运行 (在 win 下双击即可运行); 运行时跟踪鼠标的移动位置,捕获鼠标和键盘的击键情况; (*)当按下 [ESC] 键时程序退出,其它键,蜂鸣; (*)按下鼠标右键恢复初始显示方式,并发声; (*)按下鼠标左键仅产生噪音; (*)按下键盘上的 F1-F10 切换到不同的显示方式 .; ; 编译器: [MASM] [ 欢迎到群里下载:28011342 ]; (c) by 江南孤峰 Time: 2007--10--3 version: 1.0; **************************************************************************; **** 没有复杂的汇编语法,适合初学者完赏, 目前尚不完善,更新中……; **************************************************************************;----------------------------------------------------------------------------------
.model small
;----------------------------------------------------------------------------------.datamsgWin db 'Mouse or Keyboard message show as follow: $'msgHlpStar db ' ================= INFOMATION ==================$' ......
汇编多模块编译,连接(2007-11-06 12:55:00)
摘要:;-------------------------------------------------------; MASM 汇编多模块编译,连接示例;-------------------------------------------------------
; 模块 1 , 文件 data.asm ;-------------------------------------------------------
extrn msg:byteextrn funNewLine:farpublic newLine
data segment common newLine db 10,13,'$'data ends
code segment assume ds:data,cs:codemain proc farstar: push ds xor ax,ax push ax mov ax,data mov ds,ax lea dx,msg mov ah,09h int 21h call far ptr funNewLine retmain endpcode ends end star
; 模块 2, 文件 test.asm;-------------------------------------------------------
extrn newLine:bytepublic funNewLinepublic msg
data segment public msg db 'hello world$'data ends
code1 segment assume ds:data,cs:code1funNewLine proc farstar: mov a......
乘法代码(汇编)(2007-06-22 19:04:00)
摘要:;计算 a * b,其中a b的位数可以在 1 - 2^8 之间,默认位数为 50;注意 a,b 必须为正数否则结果不正确;******************************************************************
.model small.const MAX equ 50 ;乘数的最大位数.data a db MAX,MAX dup(0) b db MAX,MAX dup(0) r db MAX+MAX+1 dup(0) txta db 'Enter a:$' txtb db 'Enter b:$' result db 'a * b = $' enter db 13,10,'$'.code
;------------------------------------------------------------------;子程序,在屏幕上打印回车;------------------------------------------------------------------PtEnter proc near mov dx,offset enter mov ah,09h int 21h retPtEnter endp
;------------------------------------------------------------------;在提示下输入数据,提示信息为 si ,数据输入到 di;------------------------------------------------------------------GetData proc near mov dx,si mov ah,09h int 21h mov dx,di mov ah,0ah &nb......
世界编程大塞一等奖作品(2007-04-23 18:09:00)
摘要:e100 33 f6 bf 0 20 b5 10 f3 a5 8c c8 5 0 2 50 68 13 1 cb e 1f be a1 1 bf 0 1 e11b 6 57 b8 11 1 bb 21 13 89 7 4b 4b 48 79 f9 ad 86 e0 8b c8 bd ff ff e8 20 e134 0 3d 0 1 74 1a 7f 3 aa eb f3 2d ff 0 50 e8 f 0 5a f7 d8 8b d8 26 8a 1 aa e14f 4a 75 f9 eb de cb 57 bb 21 13 8b c1 40 f7 27 f7 f5 8b fb ba 11 1 4f 4f 4a e168 39 5 7f f9 52 8b c5 f7 25 f7 37 2b c8 95 f7 65 2 f7 37 95 2b e8 fe e fe e181 10 79 6 c6 6 fe 10 7 46 d0 14 d1 d1 d1 e5 79 ec 5a b8 11 1 ff 7 4b 4b 48 e19b 3b d0 75 f7 5f c3 83 f7 83 a6 5d 59 82 cd b2 8 42 46 9 57 a9 c5 ca aa 1b e1b4 4f 52 b4 92 3f ab 6e 9e a8 1d c6 3 fc e 6a e7 ae bb 5f 7b 10 b8 b4 f7 8 e1cd e2 bf 36 4e 39 9d 79 29 3f a f9 36 52 16 fb 5 e8 e5 a6 c2 e9 b0 43 d3 a3 e1e6 cf d3 fd fd cb d1 4c 5e e0 63 58 86 bb 3e 9 c1 20 bc cc 91 a3 47 81 70 b3 e1ff d6 1a 9e c2 c9 12 e7 4e ad f4 5f e3 30 e9 9 39 d7 e8 f9 f4 d2 44 e8 d7 22 e218 be e2 ce 88 25 cf 30 4a a8 29 ae 3f 47 c6 2d 85 e9 73 54 13 b e6 e0 34 65 e231 e2 50 8a 89 18 5f ce 70 99 3 5f 42 bf eb 7 ae d0 ca 5 22 8d......
二进制转十六进制(汇编)(2007-04-11 13:11:00)
摘要:;---------------------------------------------------------;输入二进制数,转为十六进制后输出;---------------------------------------------------------
.model small .data MAX_BIN db 100 ;二进制长度限制 REAL_LEN db ? ;实际的输入 BIN_DATA db 100 dup(?) ;存储输入的01 RADIX_DATA db 1,2,4,8 ;2^x(x=0,1,2,3) MSG_PROM db 'Please input binary code :','$' MSG_ERR db 'Input error,you must enter 0 or 1 !',13,10,'$' MSG_RLT db 'The binary code to hex is:','$' BIN_TO_HEX db 100 dup(?).code;---------------------------------------------------------;屏幕输出以 '$' 结尾的字符串,OPR为字符串变量;---------------------------------------------------------macPutTxt macro OPR mov dx,offset OPR mov ah,09h int 21h endm ;---------------------------------------------------------;屏幕打印回车换行符,用到寄存器;---------------------------------------------------------macPutEnt macro mov dl,0dh mov ah,02h int&nbs......
中断及驻留程序(汇编)(2007-04-10 13:27:00)
摘要:;---------------------------------------------------------;修改除数为 0 的中断处理程序,并驻留内存;由于 windows 的多任务环境,任务之间相互隔离,该程序在;windows 下并不能真正驻留到内存中作为除0的中断处理程序;---------------------------------------------------------
.model small.stack.code
;---------------------------------------------------------;结束程序,回到 DOS,用到寄存器 ax,dx;---------------------------------------------------------macExit macro mov ah,4ch int 21h endm
;---------------------------------------------------------;屏幕打印回车换行符,用到寄存器;---------------------------------------------------------macPutEnt macro push ax push dx mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h pop dx pop ax endm
;---------------------------------------------------------;屏幕输出以 '$' 结尾的字符串,OPR为字符串变量;用到寄存器 ax,dx;---------------------------------------------------------macPutTxt macro OPR push ax&nbs......
发声程序(汇编)(2007-04-09 12:29:00)
摘要:;---------------------------------------------------------;控制扬声器发声,可惜声音不大;---------------------------------------------------------
.model small
data segment sntimes dw 10000 ;发声频率 sndelay dw 10000 ;延迟时间data ends
code segment assume cs:code,ds:data ;---------------------------------------------------------;结束程序,回到 DOS
;---------------------------------------------------------macExit macro mov ah,4ch int 21h endm
;---------------------------------------------------------; 控制扬声器发声; cx:发声频率 bx:延迟时间;---------------------------------------------------------makeSound proc far push ax push dx mov dx,cx in al,61h ;61h 为 I/O 地址 and al,11111100b ;第 1 位为控制发声的开关,第 0 位不用mkSound: xor al,2 ;是第 0 位的值 0,1交替 out 61h,al mov cx,bxmkSnDelay: loop mkSnDelay dec dx jnz ......
数组统计(汇编)(2007-04-09 12:21:00)
摘要:;---------------------------------------------------------;统计数组中的正数,负数和 0 的个数;---------------------------------------------------------
;--------------------------------------------------------
; 文件 macro.mac
;---------------------------------------------------------
;---------------------------------------------------------;屏幕打印回车换行符,用到寄存器 ax,dx;---------------------------------------------------------macPutEnt macro mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h endm
;---------------------------------------------------------;屏幕输出一个字符 OPRCH,用到寄存器 dx;---------------------------------------------------------macPutChar macro OPRCH mov dl,OPRCH mov ah,02h int 21h endm
;---------------------------------------------------------;屏幕输出以 '$' 结尾的字符串,OPR为字符串变量;用到寄存器 ax,dx;---------------------------------------------------------macPutTxt macro OPR mov dx,offs......
初级汇编,减法(2007-04-09 12:20:00)
摘要:;---------------------------------------------------------;条件转移,溢出测试,简单减法,数制转换;---------------------------------------------------------
.model small
data segment MAX dw 100 x dw 30 y dw 25 result dw ? msg_th db 'The x too high !$' msg_of db 'Overflow !$' rlt_asc db 10 dup(?) temp_asc db 10 dup(?) data ends
code segment assume cs:code,ds:data ;---------------------------------------------------------;屏幕打印回车换行符,用到寄存器 ax,dx;---------------------------------------------------------macPutEnt macro mov dl,0dh mov ah,02h int 21h mov dl,0ah mov ah,02h int 21h endm
;---------------------------------------------------------;屏幕输出一个字符 OPRCH,用到寄存器 dx;---------------------------------------------------------macPutChar macro OPRCH mov dl,OPRCH mov ah,02h ......
汇编的加法代码(2007-04-07 19:29:00)
摘要:;计算 a + b,其中a b的位数可以在 0 - 2^15 之间,默认位数为 50;注意 a,b 必须为正数否则结果不正确;******************************************************************
.model small
.const MAX equ 50 ;加数的最大位数
.data a db MAX,MAX dup(?) b db MAX,MAX dup(?) txta db 'Enter a:$' txtb db 'Enter b:$' result db 'a + b = $' enter db 13,10,'$'
.code;------------------------------------------------------------------;子程序,在屏幕上打印回车;------------------------------------------------------------------PtEnter proc near mov dx,offset enter mov ah,09h int 21h retPtEnter endp
;------------------------------------------------------------------;在提示下输入数据,提示信息为 si ,数据输入到 di;------------------------------------------------------------------GetData proc near mov dx,si mov ah,09h int 21h mov dx,di mov ah,0ah&nbs......
