Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
36
Добавлен:
02.05.2014
Размер:
163.84 Кб
Скачать

Министерство Образования Российской Федерации

Уфимский Государственный Авиационный Технический Университет

Кафедра ТК

Отчет по лабораторным работам

по предмету «Организация ЭВМ»

На тему «Трансляция, компоновка и отладка программ»

Выполнила: студент

Проверил: Даринцев О.В.

Уфа, 2005

Лабораторная работа №1

Трансляция, компоновка и отладка программ.

а) Набрать приведенную в тексте программу на ассемблере с использованием редактора текста.

SSEG SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ; Область стека

SSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

SOURCE DB 10h,20h,30h,40h,50h ; эта таблица будет скопирована

DEST DB 5 DUP(99h) ; в эту таблицу в обратном порядке

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG, DS:DSEG, SS:SSEG

ORG 100h

MAIN PROC FAR

PUSH DS ; поместить в стек номер блока адреса возврата

XOR AX,AX ; обнулить регистр АХ, тоже можно сделать командой

PUSH AX ; поместить в стек значение адреса возврата=0

MOV AX, DSEG ; инициировать адрес сегмента данных

MOV DS,AX

; присвоить элементам таблицы DEST нулевые начальные значения

MOV DEST,0 ; обнуление 1-ого байта

MOV DEST+1,0 ; обнуление 2-ого байта

MOV DEST+2,0 ; обнуление 3-его байта

MOV DEST+3,0 ; обнуление 4-ого байта

MOV DEST+4,0 ; обнуление 4-ого байта

MOV AL, SOURCE

MOV DEST+4,AL

MOV AL, SOURCE+1

MOV DEST+3,AL

MOV AL, SOURCE+2

MOV DEST+2,AL

MOV AL, SOURCE+3

MOV DEST+1,AL

MOV AL, SOURCE+4

MOV DEST,AL

MOV AL, 0

MOV AH, 4ch

INT 21h

MAIN ENDP

CSEG ENDS

END MAIN

б) В сегменте данных определить 5 двухбайтовых слов и скопировать таблицу в DEST.

SSEG SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ; Область стека

SSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

SOURCE DW 1100h,2200h,3300h,4400h,5500h ; эта таблица будет скопирована

DEST DW 5 DUP(9999h) ; в эту таблицу в обратном порядке

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG, DS:DSEG, SS:SSEG

ORG 100h

MAIN PROC FAR

PUSH DS ; поместить в стек номер блока адреса возврата

XOR AX,AX ; обнулить регистр АХ, тоже можно сделать командой

PUSH AX ; поместить в стек значение адреса возврата=0

MOV AX, DSEG ; инициировать адрес сегмента данных

MOV DS,AX

; присвоить элементам таблицы DEST нулевые начальные значения

MOV DEST,0

MOV DEST+2,0

MOV DEST+4,0

MOV DEST+6,0

MOV DEST+8,0

MOV AX, SOURCE

MOV DEST+8,AX

MOV AX, SOURCE+2

MOV DEST+6,AX

MOV AX, SOURCE+4

MOV DEST+4,AX

MOV AX, SOURCE+6

MOV DEST+2,AX

MOV AX, SOURCE+8

MOV DEST,AX

MOV AL, 0

MOV AH, 4ch

INT 21h

MAIN ENDP

CSEG ENDS

END MAIN

б) В сегменте данных определить 5 двойных слов и скопировать таблицу в DEST.

SSEG SEGMENT PARA STACK 'STACK'

DB 64 DUP(0) ; Область стека

SSEG ENDS

DSEG SEGMENT PARA PUBLIC 'DATA'

SOURCE DW 1000h, 1000h, 2000h, 2000h, 3000h, 3000h, 4000h, 4000h, 5000h, 5000h; эта таблица будет скопирована

DEST DW 10 DUP(9999h) ; в эту таблицу в обратном порядке

DSEG ENDS

CSEG SEGMENT PARA PUBLIC 'CODE'

ASSUME CS:CSEG, DS:DSEG, SS:SSEG

ORG 100h

MAIN PROC FAR

PUSH DS ; поместить в стек номер блока адреса возврата

XOR AX,AX ; обнулить регистр АХ, тоже можно сделать командой

PUSH AX ; поместить в стек значение адреса возврата=0

MOV AX, DSEG ; инициировать адрес сегмента данных

MOV DS,AX

; присвоить элементам таблицы DEST нулевые начальные значения

MOV DEST,0

MOV DEST+2,0

MOV DEST+4,0

MOV DEST+6,0

MOV DEST+8,0

MOV DEST+10,0

MOV DEST+12,0

MOV DEST+14,0

MOV DEST+16,0

MOV DEST+18,0

MOV AX, SOURCE

MOV BX, SOURCE+2

MOV DEST+16, AX

MOV DEST+18, BX

MOV AX, SOURCE+4

MOV BX, SOURCE+6

MOV DEST+12, AX

MOV DEST+14, BX

MOV AX, SOURCE+8

MOV BX, SOURCE+10

MOV DEST+8, AX

MOV DEST+10, BX

MOV AX, SOURCE+12

MOV BX, SOURCE+14

MOV DEST+4, AX

MOV DEST+6, BX

MOV AX, SOURCE+16

MOV BX, SOURCE+18

MOV DEST, AX

MOV DEST+2, BX

MOV AL, 0

MOV AH, 4ch

INT 21h

MAIN ENDP

CSEG ENDS

END MAIN

4

Соседние файлы в папке Лабораторные работы №1-4