Изучение языка Ассемблера для персональных компьютеров, компилирование программы, отладка программы с помощью TURBO DEBUGER

Страницы работы

Содержание работы

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Красноярский Государственный Технический Университет

Лабораторная работа по ЦУиМП №1

ИЗУЧЕНИЕ ЯЗЫКА АССЕМБЛЕРА ДЛЯ

ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ

выполнил:

студент гр. Р53-4 : Титов Д. С.

проверил:

Тронин О.А.

Красноярск 2006

Цель работы

Знакомство со структурой программы при программировании на языке ассемблера для персональных компьютеров, компилирование программы, отладка программы с помощью TURBO DEBUGER.

Ход работы

Задание  (Вариант № 13) Сформировать массив из 10 двухбайтных чисел. Найти номер  максимального числа. 

Блок-схема программы:

Программа

     model small                     ; модель small 64 кб для кода программа должно хватить

     .stack 256                        ; 256 байт для стека

     .data                                 ; сегмент двнных

     mass dw 0aaah,0bbh,0eeeh,0fff0h,0abcdh,0fedch,1234h,9876h,0a0b0h,5555h               ; выделение по 2 байта каждому элементу массива, числа в массиве произвольные, но не превышающие 2 байт

m dw ?                             ; выделение 2 байт для переменной m

     n dw 0                              ; выделение 2 байт для переменной n

     .code                                ; сегмент кода

     .startup                            

               mov ax,@data       ; адрес сегмента данных в регистр ax

               mov ds,ax

               xor ax,ax                ; обнуление ax

               lea bx,mass            ; в bx поместить адрес начала массива mass

               mov dx,[bx]           ; в dx поместить значение слова, адрес которого в bx

               mov m,dx              ; присвоить переменной m значение регистра dx

               mov cx,10              ; поместить в регистр cx число 10

     M1:                                  ; метка M1

               mov dx,m              ; в регистр dx поместить значение m

               mov ax,[bx+si]      ; в регистр ax поместить значение того, чей адрес [dx+si]

cmp dx,ax              ; сравнить dx с ax

               jbe M2                   ; перейти к М2 если dx<=[bx+si]

               jmp M3                  ; перейти к М3

     M2:                                  ; метка M2

               mov dx,[bx+si]      ; в регистр dx поместить то, чей адрес в bx+si

               mov m,dx              ; присвоить переменной m значение регистра dx

               mov dx,si               ; в регистр dx поместить значение si

               shr dx,1                  ; сдвинуть dx на 1 вправо (поделить на 2)

               mov n,dx               ; присвоить переменной n значение регистра dx

     M3:                                  ; метка M3

               add si,2                  ; значение регистра si увеличить на 2

               loop M1                 ; цикл пока cx<>0, перейти к М1

               mov bx,n               ; в регистр bx поместить значение переменной n

               mov ax,4c0h          ; в регистр ax поместить значение 4c0h

               int 21h                   ; прерывание 21h

     .exit 0                                         ; выход в дос

     end                                   ; конец

Номер наибольшего элемента программа помещает в регистр bx (элементы нумеруются от 0 до 9)

Вывод: в ходе лабораторной работы была написана программа на ассемблере, ее проверка показала, что она работает правильно.

Похожие материалы

Информация о работе