У меня проблема при программировании на ассемблере.Я делаю игру «4 в ряд» на ассемблере и уже успел написать код для рисования игрового поля 7х6.Я использую массив для слежения за игровым полем и использую массив с разными колор-кодами.
PlayingField DB 42 DUP(0) ;0 for empty, 1 for yellow, 2 for res
CollorList DB 1111b, 1110b, 0100b (white, yellow, res)
CurrentBlock DB 0
Чтобы нарисовать свое игровое поле, я использую следующий код.
mov al, CollorList[2] ;collor register
mov ch, 000000
mov dh, 000000
mov cl, Position[0]
mov dl, Position[1]
mov ah, 0ch
int 10h ;set pixel
Проблема у меня теперь в том, чтобы использовать переменную CurrentBlock в качестве индекса, как этот PlayingField [CurrentBlock].Это значение мне нужно сохранить, чтобы я мог использовать его в разделе рисования кода в качестве индекса CollorList.Как этот CollorList [индекс].Таким образом, значение мне нужно поместить в регистр al, чтобы я получил белый пиксель для значения 0 текущего блока, желтый для значения 1 и красный для значения 2.
Также мне хотелось бы узнать, как яизменить значение определенного индекса в моем массиве PlayingField.Потому что "mov PlayingField [currentblock], 2, похоже, не работает.
Ассемблер является новым для меня и искал в Интернете, но пока не нашел своего ответа. Любая помощь, которую я очень ценю.
С уважением, Тим
Редактировать: Я использую DOS + MASM / LINK. Попробую, если это будет работать так. Я пробовал что-то подобное, но, похоже, не работает.
mov si,2
mov bx, [PlayingField+si]
mov al, CollorList[dx]
Это дает мне ошибку, потому что [PlayingField + si] 8-битный и bx 16-битный. Если я изменяю свой регистр на 'bl', он жалуется на последнюю строку кода, потому что 'bl' является 8-битным регистром