在下面的代码中,我用星号注释了我遇到问题的行。如您所见,SI 包含 (160 * 8)。这是正确的值,但是,我需要将其更改为(160 * 8)而不是(160 * 高度)。高度在数据段中声明为 DB。我知道我不能说 (160 * height) 但有人可以帮我解决这个问题吗?我只需要将正确的值存储在 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