Я пытаюсь Переберите этот код, который записывает символ «Q» на адрес в сегменте B800 видеопамяти, указанный ES: [ди]Loops в Ассамблее: TASM на 8086 (DosBox)
здесь Я попытался увеличить цикл на два (поскольку каждая позиция экрана состоит из двух байтов, цвета и атрибута), но код создает только символ в первом месте. Я думаю, что я не понимаю, как использовать cx, потому что я думал, что это должно повторяться 100 раз.
.model small
.stack
.code
main:
sub cx, cx
mov cx, 100
dates:
mov ax,0B800h
mov es,ax
sub di, di
mov di, 200
add di, 2
mov ah, 5
mov al, 'Q'
mov es:[di], ax
loop dates
mov ax,4C00h
int 21h
end main
спасибо, в этом есть смысл. У меня нет опыта в сборке, поэтому это действительно полезно. Если циклы требуют такого счетчика, то зачем тогда использовать инструкцию цикла? – user2241226
феноменальный он отлично работает – user2241226
Ну, хорошо, получайте удовольствие :-) Напоминает мне о тех днях, когда такие ошибки убивали всю машину. Но опять же, те, где времена, когда у ПК была настоящая кнопка сброса, и MS-DOS загружались быстрее с дискет, чем в настоящее время Windows с его твердотельного диска ;-) –