Федеральное агентство по образованию Российской Федерации
СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ
Кафедра «Приборостроение»
ЛАБОРАТОРНАЯ РАБОТА №
Выполнил:
ст. гр. Р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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.