0

次のコードでは、問題のある行にアスタリスクを付けてコメントしています。ご覧のとおり、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     
4

1 に答える 1