Автор: Пользователь скрыл имя, 18 Января 2012 в 20:09, контрольная работа
В трехзначном числе зачеркнули его последнюю цифру. Когда в оставшемся двухзначном числе переставили цифры, а за тем приписали к ним слева последнюю цифру исходного числа, то получили число x. По заданному x найти исходное число. Число x вводиться с клавиатуры, (x не меньше 1 и не больше 999 и при этом число единиц в x не равно 0).
Задание……………………………………………………………………………………………..……3
Блок-схема программы………………………………………………………………………....3
Блок-схема функции perevod_str…………………………………………………………..5
Текст программы…………………………………………………………………………………….5
Пример работы программы…………………………………………………………………..9
Список литературы…………………………………………………………………………………12
Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ
ГОСУДАРСТВЕННЫЙ МОРСКОЙ
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И
ИНФОРМАЦИОННЫХ
ТЕХНОЛОГИЙ
Курсовой
проект
Выполнил:
студент группы 3370
Ожиганов
Алексей
Проверил:
преподаватель
Федорова Н.А.
Санкт-Петербург
2011
Оглавление.
2
Задание:
В трехзначном числе зачеркнули его последнюю цифру. Когда в оставшемся двухзначном числе переставили цифры, а за тем приписали к ним слева последнюю цифру исходного числа, то получили число x. По заданному x найти исходное число. Число x вводиться с клавиатуры, (x не меньше 1 и не больше 999 и при этом число единиц в x не равно 0).
Блок-схема программы:
Блок-схема функции perevod_
Текст программы:
text segment
assume CS:text,DS:data
start:
mov AX,data
mov DS,AX
mov cx,0
lea si,strg
mov ah,02h
mov dl,'>'
int 21h
vvod:
mov ah,08h
int 21h
inc cl
cmp al,13
je done
cmp al,30h
jl eror5
cmp al,39h
jg eror5
mov ah,02h
mov dl,al
int 21h
mov byte ptr [si],al
inc si
jmp vvod
done:
xor ax,ax
cmp cl,4
jg eror1
sub cl,1
mov mas,cl
lea si,strg
asc_hex:
push cx
mov cl,10
mov bl,byte ptr [si]
sub bl,30h
mul cl
add ax,bx
inc si
pop cx
loop asc_hex
cmp ax,1
jl eror2
cmp ax,999
jg eror3
mov cl,mas
lea di,strg
jmp edin
edin:
cmp byte ptr [di],31h
je done1
inc di
loop edin
jmp eror4
str1:
lea si,strg
mov cx,16
a:
mov byte ptr [si],0
inc si
loop a
call perevod_str
jmp start
eror1:
lea dx,msg_eror1
jmp eror
eror2:
lea dx,msg_eror2
jmp eror
eror3:
lea dx,msg_eror3
jmp eror
eror4:
lea dx,msg_eror4
jmp eror
eror5:
lea dx,msg_eror5
jmp eror
eror:
call perevod_str
mov al,0
mov ah,09h
int 21h
mov cl,2
call perevod_str
mov al,13
jmp s12
done1:
mov cx,0
mov cl,mas
dec cl
lea si,strg
lea di,strg1
add si,cx
mov cl,mas
perevod:
mov al,byte ptr [si]
mov byte ptr [di],al
inc di
dec si
loop perevod
call perevod_str
mov ah,40h
mov bx,1
mov cl,mas
lea dx,strg1
int 21h
mov al,0
mov ah,08h
int 21h
s12:
cmp al,13
je str1
mov AH,4Ch
mov AL,0
int 21h
perevod_str proc
push dx
push ax
lea dx,crlf
mov ah,9
int 21h
pop ax
pop dx
ret
perevod_str endp
text ends
data segment
mas db 2
strg db 8 dup(0)
strg1 db 8 dup(0)
znach_x dw 0
msg_eror1 db 'Oshibka vvoda.slicchkom bolshoe cheslo.Povtorite popitku$'
msg_eror2 db 'Oshibka vvoda - x<1. Povtorite popitku$'
msg_eror3 db 'Oshibka vvoda - x>999. Povtorite popitku$'
msg_eror4 db 'Oshibka vvoda - v X net "1". Povtorite popitku$'
msg_eror5 db 'Oshibka vvoda - vvedena ne cifra. Povtorite popitku$'
crlf db 0Dh,0Ah,'$'
data ends ;
stk segment stack ;
db 256 dup(0) ;
stk ends ;
end start
Пример работы программы:
1)При введении числа без единицы выводиться ошибка:
2)При введение числа больше трехзначного выводиться ошибка:
9
3)При введение числа меньше единицы выводиться ошибка:
4) Если все условия удовлетворены, то выводиться ответ:
10
5)После вывода ответа происходит запрос на ввод символа и при нажатии клавиши Enter программа выполняется с начала:
11
Список литературы:
12
Информация о работе Контрольная работа по "Программированию"