Я работаю над своим первым проектом для моего класса Machine Organization. Программа переворачивает экран слева направо. Это прекрасно работает, и у меня нет проблем с этим. Однако в дополнение к перевороту экрана мой профессор также попросил нас отобразить все верхние буквы C в красном на сером. Я попытался сделать это в пределах loopRow
LOOP. При сборке ошибок нет, однако это не сработает. Я также попытался сравнить с кодовым значением ASCII, но это тоже не сработало. Какие-либо предложения?Сборочный язык «CMP»
MyCode SEGMENT
ASSUME CS:MyCode, DS:MyData
MainProg PROC
MOV AX, MyData
MOV DS, AX
MOV AX, 0B800h
MOV ES, AX
MOV BX, (25 * 160)
loop25:
SUB BX, 160
CALL flipRow
CMP BX, 0
JNE loop25 ;if not equal to 0, numLoops - 1 and repeat
MOV AH, 4Ch
INT 21h
MainProg ENDP
flipRow PROC
MOV DI, BX
ADD DI, 158
MOV SI, BX
loopRow:
MOV AX, ES: [DI]
MOV CX, ES: [SI]
MOV ES: [DI], CX
CMP CX, 'C' ;compare CX to 'C'
JNE next ;if != C go to next
MOV ES: [DI + 1], BYTE PTR 01111100b
next:
MOV ES: [SI], AX
CMP AX, 'C' ;compare AC to 'C'
JNE next2 ;if != C go to next2
MOV ES: [SI + 1], BYTE PTR 01111100b
next2:
DEC DI
DEC DI
INC SI
INC SI
CMP SI, DI
JL loopRow
RET
flipRow ENDP
MyCode ENDS