博文

[置顶] 鼠标键盘监控{汇编代码,初学者}(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......

阅读全文(6916) | 评论:1

汇编多模块编译,连接(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&......

阅读全文(6095) | 评论:0

乘法代码(汇编)(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......

阅读全文(4213) | 评论:0

世界编程大塞一等奖作品(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......

阅读全文(5603) | 评论:0

二进制转十六进制(汇编)(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
;---------------------------------------------------------
;屏幕打印回车换行符,用到寄存器
;-----------------------------------------......

阅读全文(7688) | 评论:4

中断及驻留程序(汇编)(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为字符串变量
;用到寄......

阅读全文(4224) | 评论:0

发声程序(汇编)(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......

阅读全文(5470) | 评论:0

数组统计(汇编)(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
;---------------......

阅读全文(3532) | 评论:1

初级汇编,减法(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
;----------------------------......

阅读全文(3931) | 评论:0

汇编的加法代码(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......

阅读全文(4919) | 评论:0