#ассемблер
Читаю учебник. Понятно что без скобок - это запись в определенный регистр, а со скобками? Пример кода: MOV DX, 0Ah MOV DX, [0Ah] MOV DX, BX MOV DX, [BX] MOV [BX], DX MOV BX, DX
Ответы
Ответ 1
Как я понимаю, данная команда MOV DX, 0Ah заносит непосредственное значение 0Ah в регистр DX В то время как данная команда MOV DX, [0Ah] заносит в регистр DX значение, хранящееся со смещением 0Ah в сегменте данных, адресуемым регистром DS. То есть загружает в регистр DX значение, хранящееся по адресу DS:0Ah То же самое верно и для этих команд MOV DX, BX MOV DX, [BX] В первой команде MOV DX, BX значение из регистра BX загружается в регистр DX В то время как во второй команде MOV DX, [BX] значение хранящееся по адресу DS:BX загружается в регистр DX.Ответ 2
Это синтаксис MASM, который указывает, что величину нужно трактовать как адрес, а не как непосредственное значение. MOV DX, 0Ah ; загрузить в регистр DX значение 10 = 0Ah MOV DX, [0Ah] ; загрузить в регистр DX значение, лежащее по адресу 10 MOV DX, BX ; скопировать в регистр DX значение регистра BX MOV DX, [BX] ; загрузить в регистр DX значение, лежащее по адресу, ; который хранится в регистре BX MOV [BX], DX ; записать по адресу, который хранится в регистре BX, значение ; из регистра DX MOV BX, DX ; скопировать в регистр BX значение регистра DX Разница между MOV DX, BX и MOV DX, [BX] такая же, как между d = b и d = *b в языке C.Ответ 3
[value] означает смещение относительно DS:0 сегмента данных или адрес.
Комментариев нет:
Отправить комментарий