Я написал следующий фрагмент кода (работает в DOS с masm611):
.data
msg db 10h,?,10h dup(?)
.code
.startup
lea dx,msg
mov ah,0ah
mov cl,msg
int 21h
mov bl,[msg + 1d]
Я не совсем понимаю, что такое содержимое переменной 'msg'. CL содержит значение 10h (при условии, что я ввел 5 символов). Но код [msg + 1d] обращается к данным, сохраненным со смещением местоположения (msg) + 1d. Не следует ли вместо этого получить доступ к местоположению по адресу смещения msg + 1d = 11h? Почему в одном месте он принимает содержимое «msg», а в другом - смещение «msg»?
Содержимое регистров после выполнения -
Как видно, CL = 10H и BL = 05H.