"Ассемблер и программирование для IBM PC. (IBM PC assembler language and programming)" - читать интересную книгу автора (Абель Питер, Переводчик: Ю.В.Сальников)содержимое регистра IP и повторите трассировку снова. Введите R IP,
введите 100, а затем необходимое число команд T. После каждой команды нажимайте клавишу Return. На рис.2.2 показан результат выполнения команды D CS:100. Обратите внимание на машинный код с CS:100 до 111 и вы обнаружите дамп вашей программы; следующие байты могут содержать любые данные. __________________________________________________________________________ -D CS:100 13C6:0100 B8 23 01 05 25 00 8B D8-03 D8 8B CB 2B C8 2B C0 .#..%.......+.+. 13C6:0110 90 CB 8D 46 14 50 51 52-FF 76 28 E8 74 00 8B E5 ...F.PQR.v(.t... 13C6:0120 B8 01 00 50 FF 76 32 FF-76 30 FF 76 2E FF 76 28 ...P.v2.v0.v..v( 13C6:0130 E8 88 15 8B E5 BF 36 18-12 FF 36 16 12 8B 76 28 ......6...6...v( 13C6:0140 FF 74 3A 89 46 06 E8 22-CE 8B E5 30 E4 3D 0A 00 .t:.F.."...0.=.. 13C6:0150 75 32 A1 16 12 2D 01 00-8B 1E 18 12 83 DB 00 53 u2...-.........S 13C6:0160 50 8B 76 28 FF 74 3A A3-16 12 89 1E 18 12 E8 FA P.v(.t:......... 13C6:0170 CD 8B E5 30 E4 3D 0D 00-74 0A 83 06 16 12 01 83 ...0.=..t....... -Q __________________________________________________________________________ Рис.2.2. Дамп кодового сегмента. Для завершения работы с программой DEBUG введите Q (Quit - выход). В или C>. Если печатался протокол работы с отладчиком, то для прекращения печати cнова нажмите Ctrl/PrtSc. ПРИМЕР МАШИННЫХ КОДОВ: ОПРЕДЕЛЕНИЕ ДАННЫХ ________________________________________________________________ В предыдущем примере использовались непосредственные данные, описанные непосредственно в первых двух командах (MOV и ADD). Теперь рассмотрим аналогичный пример, в котором значения 0123 и 0025 определены в двух полях сигмента данных. Данный пример позволяет понять как компьютер обеспечивает доступ к данным посредством регистра DS и адресного смещения. В настоящем примере определены области данных, содержащие cоответственно следующие значения: Адрес в DS Шест. знач. Номера байтов 0000 2301 0 и 1 0002 2500 2 и 3 0004 0000 4 и 5 0006 2A2A2A 6, 7 и 8 Вспомним, что шест. символ занимает половину байта, таким oбразом, например, 23 находится в байте 0 (в первом байте) сегмента данных, 01 - в |
|
|