Лабораторные работы №1-4 / lab2
.docМинистерство Образования Российской Федерации
Уфимский Государственный Авиационный Технический Университет
Кафедра ТК
Отчет по лабораторным работам
по предмету «Организация ЭВМ»
На тему «Режимы адресации»
Выполнила: студент
Проверил: Даринцев О.В.
Уфа, 2005
Лабораторная работа №1
Режимы адресации
а) Задать одномерный массив, состоящий из 8 элементов. Заполнить массив константами. Переместить заданный массив в другую область памяти, поменяв местами элементы с четными и нечетными номерами (поставив каждый элемент с четным номером на место нечетного элемента и каждый элемент с нечетным номером – на место четного). Элементы массива – однобайтовые. Программу написать, используя прямую и косвенную адресацию.
stack segment para stack 'stack'
db 64 dup('STACK')
stack ends
dseg segment para public 'data'
source db 11h,22h,33h,44h,55h,77h,88h,99h
empty db 92h dup(0FFh)
dest db 8 dup(0DDh)
dseg ends
cseg segment para public 'code'
assume cs:cseg,ds:dseg,ss:stack
main proc far
mov ax,dseg
mov ds,ax
mov si,0
mov di,si
add di,1
mov bx, offset dest
mov ah,source[si]
mov [bx+di],ah
mov ah,source[di]
mov [bx+si],ah
add si,2
mov di,si
add di,1
mov bx, offset dest
mov ah,source[si]
mov [bx+di],ah
mov ah,source[di]
mov [bx+si],ah
add si,2
mov di,si
add di,1
mov bx, offset dest
mov ah,source[si]
mov [bx+di],ah
mov ah,source[di]
mov [bx+si],ah
add si,2
mov di,si
add di,1
mov bx, offset dest
mov ah,source[si]
mov [bx+di],ah
mov ah,source[di]
mov [bx+si],ah
mov ah,4ch
int 21h
main endp
cseg ends
end main
а) Задать одномерный массив, состоящий из 8 элементов. Заполнить массив константами. Переместить заданный массив в другую область памяти, поменяв местами элементы с четными и нечетными номерами (поставив каждый элемент с четным номером на место нечетного элемента и каждый элемент с нечетным номером – на место четного). Элементы массива – двубайтные. Программу написать, используя прямую и косвенную адресацию.
stack segment para stack 'stack'
db 64 dup('STACK')
stack ends
dseg segment para public 'data'
source dw 1111h,2222h,3333h,4444h,5555h,6666h,7777h,8888h
empty dw 45h dup(0FFFFh)
dest dw 8 dup(0DDDDh)
dseg ends
cseg segment para public 'code'
assume cs:cseg,ds:dseg,ss:stack
main proc far
mov ax,dseg
mov ds,ax
mov si,0
mov cx,4
for:
mov di,si
add di,2
mov bx, offset dest
mov ax,source[si]
mov [bx+di],ax
mov ax,source[di]
mov [bx+si],ax
add si,4
loop for
mov ah,4ch
int 21h
main endp
cseg ends
end main