Интерпретация объявленной переменной MASM 8086 - PullRequest
0 голосов
/ 23 февраля 2020

Я написал следующий фрагмент кода (работает в 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»?

Содержимое регистров после выполнения - enter image description here

Как видно, CL = 10H и BL = 05H.

...