⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 811.asm

📁 一些小程序,关于汇编语言中程序的中断的使用,例子中包括字符输出
💻 ASM
字号:
;在屏幕的右上角动态显示文本鼠标的位置,即:鼠标的任何移动都将马上显示其所处位置,按鼠标左键结束程序的运行。


.MODEL SMALL, C
.DATA
 OldAddr DD ?
 MSG LABEL BYTE
 XMSG DB 'X=' ;显示方式:X=** Y=**
 XASC DW ?
      DB ' '
 YMSG DB 'Y='
 YASC DW ?
 Count EQU $-MSG
.STACK 128
.CODE
ClsScr PROC ;清除整个屏幕
MOV AX, 0600H
MOV BH, 30H
MOV CX, 0
MOV DX, 184FH
INT 10H
RET
ClsScr ENDP
;把两位十进制数Data转换成字符串放入以首地址Desc开始的缓冲区之中
BTOAsc PROC USES AX CX DI Data:WORD, Desc:PTR BYTE
MOV AX, Data
MOV DI, Desc
MOV word ptr [DI], 2020H ;赋两个空格
MOV CL, 10
DIV CL
OR AL, 30H
MOV [DI], AL
INC DI
OR AH, 30H
MOV [DI], AH
RET
BTOAsc ENDP
;把当前鼠标位置(CX,DX)显示在屏幕右上角,该子程序在本程序被设置为鼠标移动事
;件的中断处理程序,所以,只要鼠标一移动,该子程序马上就被执行。
DispPos PROC  FAR
.286
SHR CX, 3
SHR DX, 3
INVOKE BTOAsc,CX,ADDR XASC
INVOKE BTOAsc,DX,ADDR YASC
MOV AH, 02H
MOV BH, 0
MOV DX, 046H
INT 10H ;设置字符串的显示位置
MOV AH, 40H
MOV BX, 01H
MOV CX, COUNT
LEA DX, MSG
INT 21H ;显示鼠标位置的字符串
RET
DispPos ENDP
 .STARTUP
CALL ClsScr
MOV AX, 00
INT 33H
.IF AX != 00
MOV AX, 01H
INT 33H ;显示鼠标指针
MOV AX, CS
MOV ES, AX
LEA DX, DispPos
MOV AX, 14H
MOV CX, 1 ;把子程序DispPos设置成鼠标
INT 33H ;移动事件的中断服务程序
MOV word ptr OldAddr, DX
MOV word ptr OldAddr+2, ES ;保存原移动事件处理程序的入口地址
.REPEAT
MOV AX, 03H
INT 33H
.UNTIL BX==1 ;按下鼠标左键
MOV AX, 02H
INT 33H  ;隐藏鼠标指针
.ENDIF
MOV DX, word ptr OldAddr
MOV ES, word ptr OldAddr+2
MOV CX, 1
MOV AX, 0CH
INT 33H ;恢复原鼠标移动的中断服务程序
CALL ClsScr
.EXIT 0
END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -