Я занимаюсь университетским проектом, и я очень плохо разбираюсь, поэтому прошу вашей помощи.
"В режиме VGA (320x200 пикселей -256 цветов) он должен" рисовать "2 буквы (D и Q) центрированы по вертикали с высотой не менее 100 пикселей. Высота будет настраиваться и сохраняться в переменной, и она не должна работать, если высота меньше 100 пикселей. Ширина и их положение - на выбор. "
Я провел некоторое исследование, и код - это мой результат, и я знаю, что он не совсем соответствует моим требованиям, и я надеюсь, что вы мне поможете.
1.Для режима VGA мне нужно подключить монитор через кабель VGA, чтобы увидетьесли моя программа работает и все в порядке?
2. Это правда, что DS автоматически берет данные из .DATA?
3. При системном вызове следует ждать, пока клавиатура нажата?
Обычно мы используемуниверситетский блокнот ++ с плагином masm и ollydbg в качестве отладчика, но я открыт, пока они делают то, что должны делать.Это должно быть для .386.
Заранее спасибо, и особенно за чтение этого далеко.
.386
.model flat, stdcall
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;including msvcrt.lib, and declaring what function to import
includelib msvcrt.lib
extern exit: proc
;declare the symbol start as public - from there execution starts
public start
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;declaring data we are using
data segment
letter1 db 'D'
letter2 db 'Q'
COLORTEXT equ 7
.code
_InitializeMCGA PROC
MOV AX, 0A000h
MOV ES, AX ; ES now points to the VGA
MOV AH, 00H ; Set video mode
MOV AL, 13H ; Mode 13h
INT 10H ; We are now in 320x200x256
RET
_InitializeMCGA ENDP
start:
;MOV AX, @DATA
;MOV DS, AX ; DS now points to the data segment.
;those 2 instructions above are commented because I read that DS is taking automatically the data from .DATA
;let me know if it's wrong
CALL _InitializeMCGA ; ENTER MODE 13H
MOV AH, letter1
MOV ES, AX
MOV BP, OFFSET COLORTEXT ; ES: BP POINTS TO THE TEXT
MOV AH, 13H ; WRITE THE STRING
MOV AL, 01H; ATTRIBUTE IN BL, MOVE CURSOR TO THAT POSITION
XOR BH,BH ; VIDEO PAGE = 0
MOV BL, COLORTEXT ;colour (7=white as far as I know)
MOV CX, 25 ; LENGTH OF THE STRING
MOV DH, 50 ;ROW TO PLACE STRING
MOV DL, 10; COLUMN TO PLACE STRING
syscall ;wait for keyboard to be pressed
MOV AX, 4C00H ;dos exit
INT 21H ; Return to DOS
;finish the program
end start