Федеральное агентство по образованию
Красноярский государственный технический университет
ЦУ И МП
Лабораторная работа № 1
ИЗУЧЕНИЕ ЯЗЫКА АССЕМБЛЕРА ДЛЯ
ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ
Выполнили:
Студент гр. Р52-1
Яксанов П.
Красноярск 2005
Цель работы:
Знакомство со структурой программы при программировании на языке ассемблера для персональных компьютеров, компилирование программы, отладка программы с помощью TURBO DEBUGER.
Задание:
Вариант № 5. Сформировать массив из 10 двухбайтных чисел. Переписать во второй массив все отрицательные числа.
Текст программы:
; Laba 1
; Variant 5
seg_data segment para public 'data'
mas_in dw 2h,0fffeh,20h,1bh,0ffbfh,0ffa2h,66h,0ff9ah,3ah,43h,0ffdbh
mas_out dw 0ah dup ('#')
seg_data ends
seg_stack segment stack
db 256 dup ('?')
seg_stack ends
seg_code segment para public 'code'
main proc
assume ds:seg_data, cs:seg_code, ss:seg_stack
mov ax,seg_data
mov ds,ax
; обнуляем регистры
mov ax,0
mov bx,0
mov cx,0
mov dx,0
mov si,0
mov di,0
; сравнение
srav: mov ax,mas_in[si]
add si,2
cmp si,20
ja exit
cmp ax,0
jge srav
mov mas_out[di],ax
jmp srav
; выход
exit: mov ah,4ch
int 21h
main endp
seg_code ends
end main
Лабораторная работа № 2
ИЗУЧЕНИЕ СТАНДАРТНЫХ ФУНКЦИЙ ПРЕРЫВАНИЯ DOS
Цель работы:
Знакомство со стандартными функциями прерывания DOS, вывод информации на дисплей, ввод данных с клавиатуры и запись в файл.
Текстпрограммы:
; Laba 2
; Variant 5
seg_data segment para public 'data'
mas_in dw 0ah dup ('?')
mas_out dw 0ah dup ('#')
mess db 0ah,0dh,'$'
razrad dw 0ah
des_t dw 2710h
tis dw 1000
sot dw 100
des dw 10
seg_data ends
seg_stack segment stack
db 256 dup ('?')
seg_stack ends
seg_code segment para public 'code'
main proc
assume ds:seg_data, cs:seg_code, ss:seg_stack
mov ax,seg_data
mov ds,ax
; обнуляем регистры
mov ax,0
mov bx,0
mov cx,0
mov dx,0
mov si,0
mov di,0
; ввод элементов массива
ent: mov ah,9h
lea dx,mess
int 21h
mov ah,1h
int 21h
cmp al,2dh
jne ddd
mov di,1
mov ah,1h
int 21h
ddd: sub al,30h
xor ah,ah
add bx,ax
mov cx,4
cikl: mov ah,1h
int 21h
cmp al,0dh
je zap
push ax
mov ax,bx
mul razrad
mov bx,ax
pop ax
sub al,30h
xor ah,ah
add bx,ax
loop cikl
jmp zap
; запись
zap: cmp di,1
jne dd2
neg bx
dd2: xor di,di
mov mas_in[si],bx
xor bx,bx
add si,2
cmp si,20
jb ent
xor si,si
jmp srav
; сравнение
srav: mov ax,mas_in[si]
add si,2
cmp si,20
ja print
cmp ax,0
jge srav
mov mas_out[di],ax
add di,2
jmp srav
; вывод элементов второго массива
print: xor si,si
xor dx,dx
mov ah,9h
lea dx,mess
int 21h
dd3: mov ah,9h
lea dx,mess
int 21h
mov ax,mas_out[si]
neg ax
mov bx,ax
mov dl,2dh
mov ah,2h
int 21h
xor ah,ah
xor dx,dx
mov ax,bx
div des_t
mov cx,dx
add al,30h
mov dl,al
mov ah,2h
int 21h
xor dx,dx
mov ax,cx
div tis
mov cx,dx
add al,30h
mov dl,al
mov ah,2h
int 21h
xor ah,ah
xor dx,dx
mov ax,cx
div sot
mov cx,dx
add al,30h
mov dl,al
mov ah,2h
int 21h
xor ah,ah
xor dx,dx
mov ax,cx
div des
mov cx,dx
add al,30h
mov dl,al
mov ah,2h
int 21h
xor ah,ah
xor dx,dx
mov ax,cx
add al,30h
mov dl,al
mov ah,2h
int 21h
xor dx,dx
xor ah,ah
add si,2
cmp si,di
jb dd3
; выход из программы
exit: mov ah,4ch
int 21h
main endp
seg_code ends
end main
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.