可能是一个愚蠢的问题,但这是我在机器组织课程中的第一个项目,我遇到了一些麻烦。下面的代码旨在从上到下在屏幕中间显示“*”。不会汇编的代码行是:
MOV ES: [ numLoops * 80 * 2 + (40 * 2) ], BYTE PTR '*'
我理解为什么这不会组装,但是我不知道要代替什么numLoops
来获得它的值,以便每次执行代码行时,它numLoops
都会随着递减而向上移动一行。任何建议将不胜感激,谢谢。
MyData SEGMENT
numLoops DB 25
MyData ENDS
;-------------------------------------------------------------------------------
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyData
MainProg PROC
MOV AX, MyData
MOV DS, AX
MOV AX, 0B800h
MOV ES, AX
loop25:
CALL displayChar
DEC numLoops
CMP numLoops, 0
JNE loop25 ;if not equal to 0, numLoops - 1 and repeat
MOV AH, 4Ch
INT 21h
MainProg ENDP
displayChar PROC
MOV ES: [ numLoops * 80 * 2 + (40 * 2) ], BYTE PTR '*'
RET
displayChar ENDP
MyCode ENDS