Последовательные адреса хранят один байт, который может содержать значения от 0 до 255 .Для значений от 0 до FFFFh, которые вы хотите сохранить, вам потребуется 131072 байта (65536 * 2).В 16-битном режиме (режиме реального адреса) сегмент памяти может иметь 65536 байтов, что усложняет задачу!
cld
xor di, di ; Address 0000h
mov ax, FFFFh ; Value
More:
stosw
dec ax
js More
Это будет хранить 32768 нисходящих значений слов по адресам смещения 0, 2, 4,6, ..., 65534.
На этом этапе вам придется изменить регистр сегмента ES
, добавив к нему 2048.
Затем перейдите к следующему коду:
; DI=0 AX=7FFFh
More_:
stosw
dec ax
jnz More_
AОднако возможно байтовое решение:
mov bx, 0
mov al, 255
Next:
mov [bx], al
inc bx
dec al
jnz Next
; 0000 FF
; 0001 FE
; 0002 FD
;
; 00FE 01
; 00FF 00
Байтное решение с использованием 1 регистра:
xor bx, bx
ext:
mov [bx], bl
not byte ptr [bx]
inc bx
test bl, bl
jnz Next
; 0000 FF
; 0001 FE
; 0002 FD
;
; 00FE 01
; 00FF 00