次のコードでは、問題のある行にアスタリスクを付けてコメントしています。ご覧のとおり、SI には (160 * 8) が含まれています。これは正しい値ですが、(160 * 8) ではなく (160 * 高さ) になるように変更する必要があります。高さは、データ セグメントで DB として宣言されます。(160 * 高さ) とは言えませんが、誰かこの問題を解決するのを手伝ってくれませんか? 正しい値をSIに保存するだけです。ありがとうございました
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