Изучение компилятора Alter

Автор: Пользователь скрыл имя, 20 Декабря 2010 в 19:58, лабораторная работа

Описание работы

Разработанная программа на языке Pascal переведена на Assembler.

Работа содержит 1 файл

моя ла.doc

— 32.00 Кб (Скачать)

Федеральное Агентство по образованию Российской Федерации

Государственное образовательное учреждение высшего  профессионального образования

«Ижевский Государственный Технический Университет» 

Кафедра ОВП и СУ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Отчет по лабораторной работе

По курсу: «Системное программное обеспечение»

Тема: «Изучение  компилятора Alter» 
 
 
 
 
 
 
 
 
 
 
 
 

Выполнил:                                                                cтудент гр. Т 781 Дёктерев К.И. 
       

Проверил:                                                                                   доцент Фефелов Е.А.  
      
 
 
 

 Воткинск 

2010г.

Исходный  текст программы  на Паскале: 

Var

x, c : integer;

begin

for x := 0 to 9 do

  begin

    c := x*2;

    write (c);

   end;

end. 

Текст программы на Ассемблере: 

.Model Small

.Stack 100h

.Data

__bufrw  db   255 dup (?)

 _x  dw ?

_c  dw ?

.Code

 Main proc  ;начало главной процедуры

mov ax,@data  ;инициализация сегментного регистра ds

mov ds,ax

;начало цикла FOR №1

;присвоить переменной _x

mov _x,0  ;занести в переменную _x 0

mov bx,_x  ;записать в BX _x

mov  cx,9  ;занести в cx 9

jmp $+3  ;перейти на 3 байта вперёд

for_b_1:

inc bx   ;инкремент BX

push bx  ;записать BX в стек

push cx  ;запсать CX в стек

mov _x,bx  ;записать в перемену _x BX

;присвоить переменной _c

mov ax,_x  ;занести в AX переменную _x

mov bx,2  ;занести в BX 2

xor dx,dx  ;обнуляем DX

imul bx  ;умножение со знаком

mov _c,ax  ;записать в переменную _c ax

;обработка процедуры WRITE

mov ax,_c  ;занести в AX переменную _c

call sl_itoa  ;вызвать функцию преобразования

pop cx   ;вернуть из стека в CX

pop bx   ;вернуть из стека в BX

cmp bx,cx  ;сравнить BX и CX

jne for_b_1  ;переход если не равно

;конец цикла FOR №1

mov ah,4ch  ;вызов функции DOS

int 21h   ;завершение программы

 endp   ;конец главной процедуры

sl_itoa         proc ;начало процедуры преобразования

      push    ax bx cx dx ;

      cmp     ax, 0

      jge     Doit

      push    ax

      mov     dl, '-'

      mov     ah,2

      int     21h

      pop     ax

      neg     ax

DoIt:           call    puti2

      pop     dx cx bx ax

      ret

sl_itoa         endp 

sl_utoa         proc

      push    ax bx cx dx

      call    PutI2

      pop     dx cx bx ax

      ret

sl_utoa         endp 

Puti2           proc

      mov     bx, 10

      xor     dx, dx

      div     bx

      or      ax, ax

      jz      Done

      push    dx

      call    Puti2

      pop     dx

Done:

      or      dl, '0'

      mov ah,2

      int 21h

      ret

PutI2        endp 

end Main

Информация о работе Изучение компилятора Alter