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

UptoLike

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

11
процессора.
Пример 1.1. Программа сложения 32-разрядных операндов
.386
Assume CS:code, DS:data, SS:stk
; Простая программа сложения 32-разрядных чисел
data segment para public "data" ; Сегмент данных
sum dd 0 ; Переменная для суммы
data ends
stk segment para stack "stack" ; Сегмент стека
db 256 dup (?) ; Буфер для стека
stk ends
code segment para public "code" use16 ; Сегмент кода
begin:
mov ax,data ; Адрес сегмента данных в регистр AX
mov ds,ax ; Запись AX в DS
; Основной фрагмент программы
mov eax,12345678h ; Первый 32-разрядный операнд
add eax,87654321h ; Второй 32-разрадный операнд
mov dword ptr sum,eax ; Запись результата в sum
; Завершение программы
mov ax,4C00h ; Функция завершения программы
int 21h ; Функция Dos
code ends
END begin
Поскольку в данном примере обрабатываются 32-разрядные числа, в
текст программы необходимо включить директиву .386, разрешающую
использование команд 32-разрядных процессоров. Кроме того, при
компоновке программы с помощью программы tlink.exe следует
указать ключ /3 для разрешения 32-разрядных операций.
Если рассмотреть листинг этой программы, можно увидеть как ко-
манды МП 8086 для работы с 16-разрядными операндами, так и команды
МП 386 для работы с 32-разрядными операндами. Для облегчения текста
из протокола трансляции удалены строчные комментарии.
1 .386
2 Assume CS:code, DS:data, SS:stk
3
процессора.
      Пример 1.1. Программа сложения 32-разрядных операндов
.386
Assume CS:code, DS:data, SS:stk

; Простая программа сложения 32-разрядных чисел
data segment para public "data"    ; Сегмент данных
sum dd       0                     ; Переменная для суммы
data ends

stk   segment para stack "stack"          ; Сегмент стека
      db      256 dup (?)                 ; Буфер для стека
stk   ends

code segment para public "code" use16 ; Сегмент кода
begin:
     mov ax,data    ; Адрес сегмента данных в регистр AX
     mov ds,ax      ; Запись AX в DS
; Основной фрагмент программы
     mov eax,12345678h        ; Первый 32-разрядный операнд
     add eax,87654321h        ; Второй 32-разрадный операнд
     mov dword ptr sum,eax    ; Запись результата в sum
; Завершение программы
     mov ax,4C00h ; Функция завершения программы
     int 21h        ; Функция Dos
code ends
     END begin


      Поскольку в данном примере обрабатываются 32-разрядные числа, в
текст программы необходимо включить директиву .386, разрешающую
использование команд 32-разрядных процессоров. Кроме того, при
компоновке программы с помощью программы tlink.exe следует
указать ключ /3 для разрешения 32-разрядных операций.
      Если рассмотреть листинг этой программы, можно увидеть как ко-
манды МП 8086 для работы с 16-разрядными операндами, так и команды
МП 386 для работы с 32-разрядными операндами. Для облегчения текста
из протокола трансляции удалены строчные комментарии.

1     .386
2     Assume    CS:code, DS:data, SS:stk
3


                                     11