博文
[置顶] 鼠标键盘监控{汇编代码,初学者}(2007-10-05 13:37:00)
摘要:;----------------------------------------------------------------------------------
; 鼠标, 键盘和显示设备的汇编语言操作
;
; 在DOS系统或者命令行中运行 (在 win 下双击即可运行)
; 运行时跟踪鼠标的移动位置,捕获鼠标和键盘的击键情况
; (*)当按下 [ESC] 键时程序退出,其它键,蜂鸣
; (*)按下鼠标右键恢复初始显示方式,并发声
; (*)按下鼠标左键仅产生噪音
; (*)按下键盘上的 F1-F10 切换到不同的显示方式 .
;
; 编译器: [MASM] [ 欢迎到群里下载:28011342 ]
; (c) by 江南孤峰 Time: 2007--10--3 version: 1.0
; **************************************************************************
; **** 没有复杂的汇编语法,适合初学者完赏, 目前尚不完善,更新中……
; **************************************************************************
;----------------------------------------------------------------------------------
.model small
;----------------------------------------------------------------------------------
.data
msgWin db 'Mouse or Keyboard message show as follow: $'
msgHlpStar db ' ================= I......
汇编多模块编译,连接(2007-11-06 12:55:00)
摘要:;-------------------------------------------------------
; MASM 汇编多模块编译,连接示例
;-------------------------------------------------------
; 模块 1 , 文件 data.asm
;-------------------------------------------------------
extrn msg:byte
extrn funNewLine:far
public newLine
data segment common
newLine db 10,13,'$'
data ends
code segment
assume ds:data,cs:code
main proc far
star: 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
ret
main endp
code ends
end star
; 模块 2, 文件 test.asm
;-------------------------------------------------------
extrn newLine:byte
public funNewLine
public msg
data segment public
msg db 'hello world$'
data&......
乘法代码(汇编)(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
ret
PtEnter endp
;------------------------------------------------------------------
;在提示下输入数据,提示信息为 si ,数据输入到 di
;------------------------------------------------------------------
GetData proc near
mov dx,si
&n......
世界编程大塞一等奖作品(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......
二进制转十六进制(汇编)(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
;---------------------------------------------------------
;屏幕打印回车换行符,用到寄存器
;-----------------------------------------......
中断及驻留程序(汇编)(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为字符串变量
;用到寄......
发声程序(汇编)(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&nb......
数组统计(汇编)(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
;---------------......
初级汇编,减法(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
;----------------------------......
汇编的加法代码(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
ret
PtEnter endp
;------------------------------------------------------------------
;在提示下输入数据,提示信息为 si ,数据输入到 di
;------------------------------------------------------------------
GetData proc near
mov dx,si
mov a......