Читайте также: |
|
Б) сложения шест. 036A с содержимым регистра AX.
2. Предположим, что была введена следующая команда: E CS:100 B8 45 01 05 25 00
Вместо шест.значения 45 предполагалось 54. Напишите команду E для корректировки только одного неправильно введенного байта, т.е. непосредственно замените 45 на 54.
Предположим, что введена следующая е команда
E CS:100 B8 04 30 05 00 30 CB
а) Что представляют собой эти команды? (Сравните с первой программой в этой главе).
Команда вносит в регистр AX значение 3004, затем суммирует хранящееся значение с 3000, что дает 6004.
б) После выполнения этой программы в регистре AX должно быть значение 0460, но в действительности оказалось 6004. В чем ошибка и как ее исправить?
Ошибка в последовательности записи команды в машинном языке. Каждый последующий байт информации считывается с конца. То есть 30 04 и 30 00, поэтому и выдал результат после сложения – 6004. Для исправления стоит изменить программу на
-e cs:100 b8 30 04 05 30 00 cb
в) После исправления команд необходимо снова выполнить программу с первой команды. Какие две команды отладчика потребуются?
Нужно будет вернуть регистр IP в начальное положение, то есть через команду -r присвоить значение 100 регистру IP
4. Имеется следующая программа в машинных кодах: B0 25 D0 E0 B3 15 F6 E3 CB
Программа выполняет следующее:
- пересылает шест.значение 25 в регистр AL;
- сдвигает содержимое регистра AL на один бит влево
(в результате в AL будет 4A);
- пересылает шест.значение 15 в регистр BL;
- умножает содержимое регистра AL на содержимое
Регистра BL.
Используйте отладчик для ввода (E) этой программы по адресу CS:100. Не забывайте, что все значения представлены в шестнадцатеричном виде. После ввода программы наберите D CS:100 для просмотра сегмента кода. Затем введите команду R и необходимое число команд T для пошагового выполнения программы до команды RET. Какое значение будет в регистре AX в результате выполнения программы?
ax = 0612
5. Используйте отладчик для ввода (E) следующей программы в машинных кодах:
Данные: 25 15 00 00
Машинный код: A0 00 00 D0 E0 F6 26 01 00 A3 02 00 CB
Программа выполняет следующее:
- пересылает содержимое одного байта по адресу DS:00
(25) в регистр AL;
- сдвигает содержимое регистра AL влево на один бит
(получая в результате 4A);
- умножает AL на содержимое одного байта по адресу
DS:01 (15);
- пересылает результат из AX в слово, начинающееся по
адресу DS:02.
После ввода программы используйте команды D для просмотра сегмента данных и сегмента кода. Затем введите команду R и необходимое число команд T для достижения конца программы (RET). В этот момент регистр AX должен содержать результат 0612. Еще раз используйте команду D DS:00 и заметьте, что по адресу DS:02 значение записано как 1206.
Дата добавления: 2015-11-14; просмотров: 173 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Напишите машинные команды для | | | Стоимость дополнительного места: в бунгало № 2 и в гостинице № 6 – 10000 руб. |