Вопрос:

Архитектура ЭВМ и микроконтроллеров. Какой шестнадцатеричный код будет в регистре AX после возвращения из процедуры PR? MOV AX, 10; PUSH AX; CALL PR; MOV BX, AX; PR PROC NEAR; POP BX; MOV CX, BX; PUSH BX; RET; PR ENDP. Варианты: а) 000F; б) 000A; в) 1000; г) 0010; д) код смещения команды MOV BX, AX.

Ответ:

Перед вызовом процедуры в стек помещается значение AX = 10 (десятичное), то есть \(000A_{16}\). Команда CALL дополнительно помещает в стек адрес возврата.

В процедуре команда POP BX извлекает сначала адрес возврата, поэтому в BX оказывается адрес возврата. Затем это значение копируется в CX и снова помещается в стек командой PUSH BX. Команда RET извлекает тот же адрес и возвращает управление.

Регистр AX процедура не изменяет, поэтому после возврата AX по-прежнему содержит \(000A_{16}\).

Ответ: б) 000A.