0
在下面的代碼中,我用星號評論了我遇到的問題。正如你所看到的,SI包含(160 * 8)。這是正確的值,但是,我需要改變它,而不是(160 * 8),它應該是(160 *高度)。高度在數據段中作爲數據庫聲明。我明白我不能說(160 *高),但有人可以幫我解決這個問題嗎?我只需要在SI中存儲正確的值。謝謝DOSBox中的問題:[MOV SI,(160 * height)]?
MyData SEGMENT
singleLine DB 0DAh, 0CFh, 0C0h, 0D9h, 0C4h, 0B3h
doubleLine DB 0CAh, 0BBh, 0C8h, 0BCh, 0CDh, 0BAh
ulCorner EQU 0
urCorner EQU 1
blCorner EQU 2
brCorner EQU 3
horLine EQU 4
verLine EQU 5
singleOrDouble DB 1
foreground DB 0001
background DB 0011
height DB 8
startCorner DW 1512
MyData ENDS
;------------------------------------------------------------------------ CODE SEGMENT
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyData
MainProg PROC
MOV AX, MyData
MOV DS, AX
MOV AX, 0B800h
MOV ES, AX
CALL drawBox
MOV AH, 4Ch
INT 21h
MainProg ENDP
drawBox PROC
MOV AH, foreground
MOV AL, singleLine + ulCorner
MOV BX, startCorner
MOV ES:[BX], AX
MOV AL, singleLine + blCorner
MOV SI, 160 * 8 ;*****************height = 8********************
MOV ES:[BX + SI], AX
RET
drawBox ENDP
MyCode ENDS
感謝您的反饋,我知道MOV和MUL等等,我一直在玩他們的過去一小時,我只是不能得到它的工作,我已經在使用AX把角色放在屏幕上,我已經在使用BX來保存起始位置,如果你知道我能做什麼,你能告訴我嗎?謝謝。 – BCRwar1
@ BCRwar1,我添加了一些代碼讓你走。 – paxdiablo
謝謝你這個漂亮的工作! – BCRwar1