如何转换数字并在8086程序集中以视频图形模式显示它?

时间:2017-05-12 16:19:36

标签: 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
    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

0 个答案:

没有答案