Системное программное обеспечение. Особенности программирования 32-разрядных процессоров. Рощин А.В. - 12 стр.

UptoLike

Составители: 

12
4 ; Простая программа сложения 32-разрядных чисел
5 00000000 data segment para public "data"
6 00000000 00000000 sum dd 0
7 00000004 data ends
8
9 00000000 stk segment para stack "stack"
10 00000000 0100*(??) db 256 dup (?)
11 00000100 stk ends
12
13 0000 code segment para public "code" use16
14 0000 begin:
15 0000 B8 0000s mov ax,data
16 0003 8E D8 mov ds,ax
17 ; Основной фрагмент программы
18 0005 66| B8 12345678 mov eax,12345678h
19 000B 66| 05 87654321 add eax,87654321h
20 0011 66| 67| A3 00000000r mov dword ptr sum,eax
21 ; Завершение программы
22 0018 B8 4C00 mov ax,4C00h
23 001B CD 21 int 21h
24 001D code ends
25 END begin
В строках 15 и 16 листинга используется команда засылки операнда
в аккумулятор (B8h). Однако в строке 18 наличие перед кодом этой
команды префикса замены размера операнда (код 66h) определяет, что
длина операнда равна 32 бита, и, следовательно, используется регистр
ЕАХ. Префикс замены размера операнда включается в объектный модуль
транслятором автоматически, если в программе указано мнемоническое
обозначение 32-разрядного регистра, например, ЕАХ.
При отладке этой программы используется отладчик фирмы Borland
(турбо дебаггер), использование которого для отладки программ подробно
описывается в главе 4.
Для индикации содержимого 32-разрядных регистров требуется
провести дополнительную настройку отладчика. Запустив отладчик, надо
выбрать Основное меню
View
Registers. При этом откроется окно
индикации содержимого регистров процессора. Затем необходимо вызвать
локальное меню этого окна, нажав ALT-F10, выбрать в открывшемся меню
4    ; Простая   программа сложения 32-разрядных чисел
5    00000000    data segment para public "data"
6    00000000    00000000 sum    dd   0
7    00000004    data      ends
8
9    00000000    stk segment para stack "stack"
10   00000000    0100*(??) db   256 dup (?)
11   00000100    stk ends
12
13   0000      code segment para public "code" use16
14   0000      begin:
15   0000 B8   0000s      mov  ax,data
16   0003 8E   D8         mov  ds,ax
17   ; Основной фрагмент программы
18   0005 66| B8 12345678      mov eax,12345678h
19   000B 66| 05 87654321      add eax,87654321h
20   0011 66| 67| A3 00000000r mov dword ptr sum,eax
21   ; Завершение программы
22   0018 B8   4C00       mov  ax,4C00h
23   001B CD   21         int  21h
24   001D code ends
25        END begin


     В строках 15 и 16 листинга используется команда засылки операнда
в аккумулятор (B8h). Однако в строке 18 наличие перед кодом этой
команды префикса замены размера операнда (код 66h) определяет, что
длина операнда равна 32 бита, и, следовательно, используется регистр
ЕАХ. Префикс замены размера операнда включается в объектный модуль
транслятором автоматически, если в программе указано мнемоническое
обозначение 32-разрядного регистра, например, ЕАХ.
     При отладке этой программы используется отладчик фирмы Borland
(турбо дебаггер), использование которого для отладки программ подробно
описывается в главе 4.
     Для индикации содержимого 32-разрядных регистров требуется
провести дополнительную настройку отладчика. Запустив отладчик, надо
выбрать Основное меню→View→Registers. При этом откроется окно
индикации содержимого регистров процессора. Затем необходимо вызвать
локальное меню этого окна, нажав ALT-F10, выбрать в открывшемся меню



                                     12