Ассемблирование и выполнение программ

Автор работы: Пользователь скрыл имя, 21 Ноября 2012 в 19:19, лабораторная работа

Описание

Цель работы: показать процессы ассемблирования, компоновки и выполнения программ на высокопроизводительных микропроцессорных отладочных устройствах.
При разработке программ на ассемблере требуются: любой редактор для набора текста исходной программы, Ассемблер (в данном случае MASM) и программа-компоновщик LINK.
Шаг ассемблирования включает в себя трансляцию исходного текста в машинный объектный код и генерацию модуля с расширением .OBJ. Этот формат еще не готов к исполнению, необходим шаг компоновки - то есть преобразование модуля .OBJ в модуль .EXE (исполняемый модуль).

Работа состоит из  1 файл

лаба4.docx

— 142.17 Кб (Скачать документ)

M2 . . . . . . . . . . . . . . .   L NEAR 0019 CODESG

 

@FILENAME  . . . . . . . . . . .   TEXT  D2e  

 

 

     38 Source  Lines

     38 Total   Lines

     11 Symbols

 

  47456 + 396912 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

 

Print Screen экрана D2e.exe

 

Листинг D2с.сom

     page   60,132

     title  D2c(.COM)

 

0000         codesg  segment para 'code'

     assume cs:codesg,ds:codesg,ss:codesg,es:codesg

     ;-----------------------------

0100         org 100h ;обязательный атрибут исходной программы

     ;-----------------------------

 0100  EB 07 90        begin: jmp main

     ;-----------------------------

 0103  00FA        flda     dw   250

 0105  007D        fldb     dw   125

 0107  ????        fldc     dw   ?

0109         main proc  near      ; near - короткая передача

 0109  B8 0600        mov ax,0600h     ;АН 06 (прокрутка) AL 00 (весь экран)

010C  B7 00        mov bh,00         ;нормальный атрибут (черно/белый)

010E  B9 0000        mov cx,0000       ;верхняя левая позиция

0111  BA 184F        mov dx,184fh      ;нижняя правая позиция

0114  CD 10        int 10h           ;передача управления в BIOS

 0116  B8 1000                mov ax,1000h

 0119  BB FFFF    m:   mov bx,0ffffh

 011C  4B    m2:  dec bx

 011D  75 FD         jnz m2

 011F  48         dec ax

 0120  75 F7         jnz m

 0122  C3             ret

0123         main  endp

0123         codesg  ends

           end  begin

 

Segments and Groups:

 

                N a m e          Length  Align Combine Class

 

CODESG . . . . . . . . . . . . .   0123 PARA NONE 'CODE'

 

Symbols:           

 

                N a m e          Type  Value  Attr

 

BEGIN  . . . . . . . . . . . . .   L NEAR 0100 CODESG

 

FLDA . . . . . . . . . . . . . .   L WORD 0103 CODESG

FLDB . . . . . . . . . . . . . .   L WORD 0105 CODESG

FLDC . . . . . . . . . . . . . .   L WORD 0107 CODESG

 

M  . . . . . . . . . . . . . . .   L NEAR 0119 CODESG

M2 . . . . . . . . . . . . . . .   L NEAR 011C CODESG

MAIN . . . . . . . . . . . . . .   N PROC 0109 CODESG Length = 001A

 

@FILENAME  . . . . . . . . . . .   TEXT  D2c  

 

 

     29 Source  Lines

     29 Total   Lines

     11 Symbols

 

  47454 + 396914 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

 

Print Screen экрана D2c.com

 

 

 

Задание 3

 

Листинг D3e.exe

     PAGE 60,132

     TITLE D3e.(ЕХЕ)<Составление лабораторного варианта>

          

 0000         STACKSG SEGMENT PARA STACK 'Stack'

 0000  0020        DW    32 DUP(?)

      

 

 

0040         STACKSG ENDS

         

0000         DATASG   SEGMENT  PARA  'Data'

 0000  68 65 6C 6C 6F 21 21      namprmr db  'hello!!','$'              

       24   

0008         DATASG   ENDS

 

0000         CODESG   SEGMENT  PARA  'Code'

 0000         BEGIN PROC FAR ;начало процедуры begin,пересылки длинные 

     ASSUME    CS:CODESG, DS:DATASG, SS:STACKSG, ES:DATASG

     

 0000  1E        PUSH   DS

 0001  2B C0        SUB  AX,AX

 0003  50        PUSH   AX

     

 0004  B8 ---- R       MOV  AX,  DATASG

 0007  8E D8        MOV  DS,  AX

 

0009  B4 09        mov ah, 09        ;запрос вывода на экран

000B  8D 16 0000 R       lea dx, namprmr   ;загрузка адреса сообщения

000F  CD 21        int 21h  

 

     ; mov ax,0600h   ; АН 06 (прокрутка) AL 00 (весь экран

     ; mov bh,07 ;       нормальный атрибут (черно/белый)

     ; mov cx,0000       ;верхняя левая позиция

     ; mov dx,184fh      ;нижняя правая позиция

     ; int 10h           ;передача управления в BIOS

     

 0011  BA FFFF         mov dx,0ffffh

 0014  BB FFFF    m:   mov bx,0ffffh

 0017  4B    m1:  dec bx

 0018  75 FD         jnz m1

 001A  4A         dec dx

 001B  75 F7         jnz m

 001D  CB         ret

                 

001E         BEGIN    ENDP       ;конец процедуры BEGIN

 001E         CODESG   ENDS       ;конец сегмента кодового

     END    BEGIN

 

Segments and Groups:

 

                N a m e          Length  Align Combine Class

 

CODESG . . . . . . . . . . . . .   001E PARA NONE 'CODE'

DATASG . . . . . . . . . . . . .   0008 PARA NONE 'DATA'

STACKSG  . . . . . . . . . . . .   0040 PARA STACK 'STACK'

 

Symbols:           

 

                N a m e          Type  Value  Attr

 

BEGIN  . . . . . . . . . . . . .   F PROC 0000 CODESG Length = 001E

 

M  . . . . . . . . . . . . . . .   L NEAR 0014 CODESG

M1 . . . . . . . . . . . . . . .   L NEAR 0017 CODESG

 

NAMPRMR  . . . . . . . . . . . .   L BYTE 0000 DATASG

 

@FILENAME  . . . . . . . . . . .   TEXT  D3e  

 

 

     43 Source  Lines

     43 Total   Lines

     12 Symbols

 

  47452 + 396916 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

 

Print Screen экрана D3e.exe

 

Листинг D3с.сom

     page   60,132

     title D3c (COM);  

     ;-----------------------------

0000         codesg  segment para 'code'

 

     assume cs:codesg,ds:codesg,ss:codesg,es:codesg

     ;-----------------------------

0100         org 100h ;обязательный атрибут исходной программы

     ;-----------------------------

 0100  EB 07 90        begin: jmp main

     ;-----------------------------

     

     ;-----------------------------

 0103  00FA        flda     dw   250

 0105  007D        fldb     dw   125

 0107  ????        fldc     dw   ?

     ;-----------------------------

0109         main proc  near      ; near - короткая передача

 0109  B8 0600        mov ax,0600h      ;АН 06 (прокрутка) AL 00 (весь экран)

010C  B7 07        mov bh,07         ;нормальный атрибут (черно/белый)

010E  E2 F1 E5 F5 20 E1 EB     namprmr     db  'всех благ!','$'

       E0 E3 21 24  

0119  B9 0000        mov cx,0000       ;верхняя левая позиция

011C  BA 184F        mov dx,184fh      ;нижняя правая позиция

011F  CD 10        int 10h           ;передача управления в BIOS

          

0121  B4 09                    mov ah, 09        ;запрос вывода на экран

0123  8D 16 010E R                   lea dx, namprmr   ;загрузка адреса сообщения

 0127  CD 21                    int 21h           ;вызов DOS

 

 0129  B8 1000                         mov ax,1000h

 012C  BB FFFF    m:   mov bx,0ffffh

 012F  4B    m2:  dec bx

 0130  75 FD         jnz m2

 0132  48            dec ax

 0133  75 F7         jnz m

 0135  C3                         ret

     

0136     main endp

0136         codesg  ends

           end  begin

 

Segments and Groups:

 

                N a m e          Length  Align Combine Class

 

CODESG . . . . . . . . . . . . .   0136 PARA NONE 'CODE'

 

Symbols:           

 

                N a m e          Type  Value  Attr

 

BEGIN  . . . . . . . . . . . . .   L NEAR 0100 CODESG

 

FLDA . . . . . . . . . . . . . .   L WORD 0103 CODESG

FLDB . . . . . . . . . . . . . .   L WORD 0105 CODESG

FLDC . . . . . . . . . . . . . .   L WORD 0107 CODESG

 

M  . . . . . . . . . . . . . . .   L NEAR 012C CODESG

M2 . . . . . . . . . . . . . . .   L NEAR 012F CODESG

MAIN . . . . . . . . . . . . . .   N PROC 0109 CODESG Length = 002D

 

NAMPRMR  . . . . . . . . . . . .   L BYTE 010E CODESG

 

@FILENAME  . . . . . . . . . . .   TEXT  D3c  

 

 

     40 Source  Lines

     40 Total   Lines

     12 Symbols

 

  47452 + 396916 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

 

Print Screen экрана D3c.com

 

 

Задание 4

 

Листинг D4e.exe

 

     Page 60,132

     TITLE D4e.EXE

 

0000         STACKSG SEGMENT PARA STACK 'Stack'

 0000  0020        DW 32 DUP(?)

 

0040         STACKSG ENDS     

0000         DATASG   SEGMENT  PARA  'Data'

 0000  00 24        CTR DB 00,'$'

0002         DATASG   ENDS

 

0000         CODESG   SEGMENT  PARA  'Code'

0000         BEGIN PROC FAR 

     ASSUME CS:CODESG, DS:DATASG, SS:STACKSG, ES:NOTHING

 

 0000  1E        PUSH   DS

 0001  2B C0        SUB    AX,AX

 0003  50        PUSH   AX

 

 0004  B8 ---- R                     MOV  AX,  DATASG

 0007  8E D8        MOV  DS,  AX

 

 0009  8E C0        mov    es,ax

 000B  E8 0018 R  call  b10clr    

 000E  E8 0026 R  call  c10set    

 0011  E8 0030 R                call  d10disp  

 0014  E8 0042 R                CALL Z

 0017  CB   ret

 

0018     b10clr   proc NEAR

 0018  B8 0600          mov  ax,0600h

 001B  B7 07          mov  bh,07

 001D  B9 0000          mov  cx,0000  

 0020  BA 184F          mov  dx,184fh 

 0023  CD 10          int  10h

 0025  C3          RET

0026      b10clr   endp

 

0026    c10set     proc NEAR

 0026  B4 02              mov  ah,02

 0028  B7 00              mov  bh,00

 002A  BA 0000              mov  dx,0000

 002D  CD 10              int  10h

 002F  C3              ret

0030         c10set     endp

0030     d10disp    proc NEAR

 0030  B9 0100          mov  cx,256

 0033  8D 16 0000 R   d20:  lea  dx,ctr 

 0037  B4 09          mov  ah,09  

 0039  CD 21          int  21h

 003B  FE 06 0000 R         inc  ctr         

 003F  E2 F2          loop d20     

 0041  C3          ret

0042     d10disp    endp

 

0042    Z PROC NEAR

 

 0042  BA FFFF   MOV DX,0FFFFH

 0045  BB FFFF   M2:MOV BX,0FFFFH

 0048  4B   M1:DEC BX

 0049  75 FD   JNZ M1

 004B  4A   DEC DX

 004C  75 F7   JNZ M2

 004E  C3   RET

 

004F    Z ENDP

 

004F    BEGIN    ENDP    

004F    CODESG   ENDS 

END    BEGIN

 

Segments and Groups:

 

                N a m e          Length  Align Combine Class

 

CODESG . . . . . . . . . . . . .   004F PARA NONE 'CODE'

DATASG . . . . . . . . . . . . .   0002 PARA NONE 'DATA'

STACKSG  . . . . . . . . . . . .   0040 PARA STACK 'STACK'

 

Symbols:           

 

                N a m e          Type  Value  Attr

 

B10CLR . . . . . . . . . . . . .   N PROC 0018 CODESG Length = 000E

BEGIN  . . . . . . . . . . . . .   F PROC 0000 CODESG Length = 004F

 

C10SET . . . . . . . . . . . . .   N PROC 0026 CODESG Length = 000A

CTR  . . . . . . . . . . . . . .   L BYTE 0000 DATASG

 

D10DISP  . . . . . . . . . . . .   N PROC 0030 CODESG Length = 0012

D20  . . . . . . . . . . . . . .   L NEAR 0033 CODESG

 

M1 . . . . . . . . . . . . . . .   L NEAR 0048 CODESG

M2 . . . . . . . . . . . . . . .   L NEAR 0045 CODESG

 

Z  . . . . . . . . . . . . . . .   N PROC 0042 CODESG Length = 000D

 

@FILENAME  . . . . . . . . . . .   TEXT  D4e  

 

 

     70 Source  Lines

     70 Total   Lines

     17 Symbols

 

  47438 + 396914 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

 

Print Screen экрана D4e.exe

Листинг D4с.сom

     page   60,132

     title D4c (COM)  

     

0000         codesg segment  para  'code'

     assume cs:codesg,ds:codesg,ss:codesg,es:codesg          

0100         org  100h          

 0100  EB 02        begin:  jmp  short  main

 0102  00 24        ctr     db   00,'$'          

     ; основная процедура 

      ----------------------------

 0104         main  proc  near

 0104  E8 0111 R             call  b10clr    ;очистить экран

 0107  E8 011F R             call  c10set    ;установить курсор

010A  E8 0129 R             call  d10disp   ;вывести символ на экран

 010D  E8 013B R             call Z 

 0110  C3        ret

0111         main  endp          

     ; очистка экрана

      -------------------

0111         b10clr   proc NEAR

 0111  B8 0600              mov  ax,0600h

 0114  B7 07              mov  bh,07

 0116  B9 0000              mov  cx,0000     ;левая верхняя позиция

0119  BA 184F              mov  dx,184fh    ;правая нижняя позиция

 011C  CD 10              int  10h

 011E  C3              ret

 011F         b10clr   endp          

     ; установка курсора  в 00,00

     ----------------------------------

 011F         c10set     proc NEAR

 011F  B4 02              mov  ah,02

 0121  B7 00              mov  bh,00

 0123  BA 0000              mov  dx,0000

 0126  CD 10              int  10h

 0128  C3              ret

0129         c10set     endp

     

     ;вывод на экран ASCII символов

     

0129         d10disp    proc NEAR

0129  B9 0100              mov  cx,256      ;256 итераций

012C  8D 16 0102 R       d20:  lea  dx,ctr      ;адрес счетчика

0130  B4 09              mov  ah,09       ;функция вывода символа

0132  CD 21              int  21h

0134  FE 06 0102 R             inc  ctr         ;увеличить содерж. счетчика

0138  E2 F2              loop d20         ;уменьшить сх, если не 0 - цикл

 013A  C3              ret

013B         d10disp    endp     

013B         Z PROC NEAR     

 013B  B8 FFFF         MOV ax,0ffffH

 013E  BB FFFF         M2:MOV BX,0FFFFH

 0141  4B         M1:DEC BX

 0142  75 FD         JNZ M1

 0144  48         DEC ax

 0145  75 F7         JNZ M2

 0147  C3          RET     

0148          Z ENDP

0148         codesg     ends

                end    begin

 

 

Segments and Groups:

 

                N a m e          Length  Align Combine Class

 

CODESG . . . . . . . . . . . . .   0148 PARA NONE 'CODE'

 

Symbols:           

 

                N a m e          Type  Value  Attr

 

B10CLR . . . . . . . . . . . . .   N PROC 0111 CODESG Length = 000E

BEGIN  . . . . . . . . . . . . .   L NEAR 0100 CODESG

 

C10SET . . . . . . . . . . . . .   N PROC 011F CODESG Length = 000A

CTR  . . . . . . . . . . . . . .   L BYTE 0102 CODESG

 

D10DISP  . . . . . . . . . . . .   N PROC 0129 CODESG Length = 0012

D20  . . . . . . . . . . . . . .   L NEAR 012C CODESG

 

M1 . . . . . . . . . . . . . . .   L NEAR 0141 CODESG

M2 . . . . . . . . . . . . . . .   L NEAR 013E CODESG

MAIN . . . . . . . . . . . . . .   N PROC 0104 CODESG Length = 000D

 

Z  . . . . . . . . . . . . . . .   N PROC 013B CODESG Length = 000D

 

@FILENAME  . . . . . . . . . . .   TEXT  D4c  

 

 

     67 Source  Lines

     67 Total   Lines

     14 Symbols

 

  47454 + 396914 Bytes symbol space free

 

      0 Warning Errors

      0 Severe  Errors

Print Screen экрана D4c.com

 

Задание 5

 

Листинг D5e.exe

     page 60,132

     title D5e (exe) Ввод и вывод

     ;---------------------------------

0000         stacksg segment para 'stack'

 0000  0020[        dw  32 dup(?)

   ????   

 

0040         stacksg ends

     ;---------------------------------

0000         datasg segment para 'data'

 0000         namepar  label  byte        ;имя списка параметров:

0000  14        maxnlen  db 20              ;максимальная длина имени

0001  ??        namelen  db ?               ;число введенных символов

0002  0014[        namefld  db 20 dup(' '),'$' ;Введеннoe имя и ограничитель

   20   

       24   

 0017  57 68 61 74 20 69 73      primpt   db  'What is you Name?','$'

       20 79 6F 75 20 4E 61 

       6D 65 3F 24  

0029         datasg   ends

     ;---------------------------------

0000         codesg segment para 'code'

0000         begin proc  far

     assume cs:codesg,ds:datasg,ss:stacksg,es:datasg

 0000  1E        push   ds

 0001  2B C0        sub    ax,ax

 0003  50        push   ax

 0004  B8 ---- R       mov    ax,datasg

 0007  8E D8        mov    ds,ax

 0009  8E C0        mov    es,ax

 000B  E8 002D R       call   q10clr     ;очистка экрана

 000E    a1LOOP:

000E  BA 0000        mov    dx,0000    ;установка курсора в 0

 0011  E8 003B R       call   q20curs    ;

 0014  E8 0042 R       call   b10prmp    ;выдать текст запроса

 0017  E8 004B R       call   d10inpt    ;ввести имя

 001A  E8 002D R       call   q10clr     ;очистить экран

 

 001D  80 3E 0001 R 00       cmp    namelen,00 ;имя введено?

 0022  74 08        je     a2        ;нет - выйти

0024  E8 0054 R       call   e10code    ;выдать сигнал и ограничитель '$'

0027  E8 0065 R       call   f10cent    ;центрирование и вывод

 002A  EB E2        jmp    a1LOOP

002C    a2:

 002C  CB        ret               ; вернуться в DOS

Информация о работе Ассемблирование и выполнение программ