Страницы

Поиск по вопросам

среда, 29 января 2020 г.

В чем различие между регистр и [регистр]?

#ассемблер


Читаю учебник. Понятно что без скобок - это запись в определенный регистр, а со скобками?

Пример кода:

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 сегмента данных или адрес.

Комментариев нет:

Отправить комментарий