Программа деления двух 10 байтовых чисел без учета знака. Блок-схема

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

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

Федеральное агентство по образованию Российской Федерации

СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ

ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ

Кафедра «Приборостроение»

ЛАБОРАТОРНАЯ РАБОТА №

Выполнил:

ст. гр. Р55-4

Проверил:

преподаватель

Красноярск 2008

Вариант № 18. Написать программу деления двух 10 байтовых чисел без учета знака.

Блок-схема:


Текст программы:

model small

.stack 256

.data

chi       db 2,5,9,8,1,8,3,7,9,8      ;инициализация 10байтного числа chi 8973818952

zn        db 1,3,5,4,6,1,2,6,8,2      ;инициализация 10байтного числа zn 2862164531

chastn  db 0                                 ; инициализация 10-байтного числа chastn=0

.code

mov     ax,@data              ; инициализация сегментного…

mov     ds,ax                     ; ….. регистра  ds

mov     cx,10                    ; задаем счетчик циклов сх=10

mov     si,0                       ; задаем индексный регистр si=0

mov     di,0                       ; задаем индексный регистр di=0

cycl1:        mov     di,9                       ; задаем индексный регистр di=9

cycl:          mov     al,chi[di]              ; помещаем в al di-тый разряд числа chi

mov     dl,zn[di]               ; помещаем в dl di-тый разряд числа chi

cmp     al,dl                      ; сравниваем al c dl, если…..

je         noll                       ; если al=dl то переход на метку noll

cmp     al,0                       ; сравниваем al с 0

je         nol                                    ; если al=0 то переход на метку nol

jne       nenol                    ; если al не равен 0 то переход на метку nenol

nol:            cmp     dl,0                       ; сравниваем dl с 0

je         noll                       ; если dl=0 то переход на метку noll

noll:          dec      di                          ; декримент di

jmp      cycl                      ; переход на метку cycl

nenol:        cmp     al,dl                      ; сравниваем al с dl

jb         endpr                    ; если al < dl то переход на метку endpr

cycl2:        mov     al,chi[si]               ; помещаем в al si-тый разряд числа chi

mov     dl,zn[si]               ; помещаем в dl si-тый разряд числа chi

cmp     al,dl                      ; сравниваем al с dl

ja         met1                     ; если al>dl то переход на метку met1

jb         met2                     ; если al<dl то переход на метку met2

met1:         sub      al,dl                      ; вычитаем dl из al

mov     chi[si],al              ; записываем al в si-тый разряд числа chi

inc       si                           ; инкремент si

loop     cycl1                    ; если сх не равен 0 то переход на метку cucl1

jmp      sravn1                  ; переход на метку sravn1

met2:         add      al,10                     ; увеличиваем al на 10

sub      al,dl                      ; вычитаем dl из al

mov     chi[si],al              ; записываем al в si-тый разряд числа chi

mov     al,0                       ; обнуляем регистр al

mov     dl,0                       ; обнуляем регистр dl

mov     al,chi[si+1]          ; записываем al в (si+1)-тый разряд числа chi

sub      al,1                       ; вычитаем 1 из al

mov     chi[si+1],al          ; записываем al в (si+1)-тый разряд числа chi

inc       si                          ; инкремент si

loop     cycl1                    ; если сх не равен 0 то переход на метку cucl1

jmp      sravn1                  ; переход на метку sravn1

sravn1:      mov     di,9                       ; записываем в di число 9

sravn:        add      chastn,1                ; увеличиваем chastn на 1

norm1:      mov     al,0                       ; обнуляем регистр al

mov     dl,0                       ; обнуляем регистр dl

mov     al,chi[di]              ; записываем al в di-тый разряд числа chi

mov     dl,zn[di]               ; записываем dl в di-тый разряд числа zn

cmp     al,dl                      ; сравниваем al с dl

je         srav                      ; если al=dl то переход на метку srav

cmp     al,0                       ; сравниваем al с 0

je         srv                        ; если al=0 то переход на метку srv

jne       norm                    ; если al не равен 0 то переход на метку norm

srv:            cmp     dl,0                       ; сравниваем al с 0

je         srav                      ; если dl=0 то переход на метку srav

jne       norm                    ; если al не равен 0 то переход на метку norm

srav:          dec      di                          ; декримент di

jmp      norm1                  ; переход на метку norm1

norm:        cmp     al,dl                      ;сравниваем al с dl  

ja         cool                      ;если al>dl то переход на cool

je         srav                      ; если al=dl то переход на srav

jmp      endpr                    ; переход на endpr

cool:          mov     cx,10                    ; помещаем число 10 в сх

mov     si,0                       ; обнуляем si

mov     di,0                       ; обнуляем di

jmp      cycl1                    ; переход на cycl1

endpr:        mov     ax,4c00h              ; стандартный выход …..

int        21h                       ; …. из программы

end

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

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

Тип:
Отчеты по лабораторным работам
Размер файла:
48 Kb
Скачали:
0