Assembly 如何在8086汇编中转换数字并以视频图形模式显示?
我想知道如何在8086汇编中显示消息 正如您在下面的代码中看到的,我希望通过编写“CONVERT”过程来完成我的代码。如何完成此代码 我应该在视频模式中每8个像素显示一条消息,即一个字符对应一个块Assembly 如何在8086汇编中转换数字并以视频图形模式显示?,assembly,emu8086,Assembly,Emu8086,我想知道如何在8086汇编中显示消息 正如您在下面的代码中看到的,我希望通过编写“CONVERT”过程来完成我的代码。如何完成此代码 我应该在视频模式中每8个像素显示一条消息,即一个字符对应一个块 CURSOR MACRO ROW,COLUMN ;key cursor MOV AH,02H MOV BH,00 MOV DH,ROW MOV DL,COLUMN INT 10H ENDM DISPLAY MACRO STRING MOV AH,09H
CURSOR MACRO ROW,COLUMN ;key cursor
MOV AH,02H
MOV BH,00
MOV DH,ROW
MOV DL,COLUMN
INT 10H
ENDM
DISPLAY MACRO STRING
MOV AH,09H
MOV DX,OFFSET STRING ;load string address
INT 21H
ENDM
.MODEL SMALL
.STACK
.DATA
MESSAGE_1 DB 'PRESS ANY KEY TO GET OUT','$'
MESSAGE_2 DB 'THE MOUSE CURSOR IS LOCATED AT','$'
POS_HO DB ?,?, 'AND $'
POS_VE DB ?,?, '$'
OLDVIDEO DB ?
NEWVIDEO DB 0EH
.CODE
MAIN PROC
MOV AX,@DATA
MOV DS,AX
MOV AH,0FH ;current video mode
INT 10H
MOV OLDVIDEO,AL ;move current mode
MOV AX,0600H ;clear screen
MOV BH,07
MOV CX,0
MOV DX,184FH
INT 10H
MOV AH,00H ;set new mode
MOV AL,NEWVIDEO
INT 10H
MOV AX,0 ;mouse initioalize
INT 33H
MOV AX,01 ;show cursor
INT 33H
CURSOR 20,20 ;text cursor
DISPLAY MESSAGE_1
AGAIN: MOV AX,03H ;get mouse location
INT 33H ;clear screen
MOV AX,CX ;x-position
CALL CONVERT
MOV POS_HO,AL
MOV POS_HO+1,AH
MOV AX,DX ;y-position
CALL CONVERT
MOV POS_VE,AL
MOV POS_VE+1,AH
CURSOR 5,20
DISPLAY MESSAGE_2
DISPLAY POS_HO
DISPLAY POS_VE
MOV AH,01 ;check key press
INT 16H
JZ AGAIN
MOV AH,02 ;hide mouse cursor
INT 33H MOV AH,0 ;restore video mode
MOV AL,OLDVIDEO
INT 10H
MOV AH,4CH ;back to DOS
INT 21H
MAIN ENDP
END
要将数字转换为其文本表示,请看一看,因为鼠标在所选图形屏幕上的位置可能超过99,所以仅使用“
POS____-HO DB?”、?、”和“$”
”是不够的!您至少需要3个字符位置。