Контрольная работа по "Программированию"

Автор: Пользователь скрыл имя, 18 Января 2012 в 20:09, контрольная работа

Краткое описание

В трехзначном числе зачеркнули его последнюю цифру. Когда в оставшемся двухзначном числе переставили цифры, а за тем приписали к ним слева последнюю цифру исходного числа, то получили число x. По заданному x найти исходное число. Число x вводиться с клавиатуры, (x не меньше 1 и не больше 999 и при этом число единиц в x не равно 0).

Оглавление

Задание……………………………………………………………………………………………..……3
Блок-схема программы………………………………………………………………………....3
Блок-схема функции perevod_str…………………………………………………………..5
Текст программы…………………………………………………………………………………….5
Пример работы программы…………………………………………………………………..9
Список литературы…………………………………………………………………………………12

Файлы: 1 файл

Курсовой проект.docx

— 198.66 Кб (Скачать)

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

Государственное образовательное учреждение высшего  профессионального образования

САНКТ-ПЕТЕРБУРГСКИЙ  ГОСУДАРСТВЕННЫЙ МОРСКОЙ ТЕХНИЧЕСКИЙ  УНИВЕРСИТЕТ 

КАФЕДРА     ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ  И

  ИНФОРМАЦИОННЫХ  ТЕХНОЛОГИЙ 
 
 
 
 
 
 
 

Курсовой  проект 
 
 
 
 
 
 
 
 

                    Выполнил:

                    студент группы 3370

                    Ожиганов Алексей 
                     

                    Проверил:

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

    Федорова  Н.А.                
 
 
 
 
 
 
 

Санкт-Петербург

2011

Оглавление.

  1. Задание……………………………………………………………………………………………..……3
  2. Блок-схема программы………………………………………………………………………....3
  3. Блок-схема функции perevod_str…………………………………………………………..5
  4. Текст программы…………………………………………………………………………………….5
  5. Пример работы программы…………………………………………………………………..9
  6. Список литературы…………………………………………………………………………………12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

2

Задание:

В трехзначном  числе зачеркнули его последнюю  цифру. Когда в оставшемся двухзначном  числе переставили цифры, а за тем приписали к ним слева последнюю цифру исходного числа, то получили число x. По заданному x найти исходное число. Число x вводиться с клавиатуры, (x не меньше 1 и не больше 999 и при этом число единиц в x не равно 0).

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

 

 
 

 

                                         Да                                  Нет

                                                                   Да                                                       Нет

                                                                                                             Error

 

                                                  Да                                     Нет 

                                                                                                                                                                                    3

                                                                 выход

                                                                                        Да                                                               Нет

                                                                                                                                                            нет

                                                                                                                      да

                                                            

                                                       выход

                                                Да                                                      Нет

                                                                                                                                                                               4

Блок-схема функции perevod_str: 
 
 
 
 
 
 
 
 
 
 
 

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

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                                                                                                                                 5

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                                                                                                                    6

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                                                                                                                                 7

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      
 

                                             8

Пример работы программы:

1)При введении числа без единицы выводиться ошибка:

2)При введение числа больше трехзначного выводиться ошибка:

 
 
 
 

9

3)При введение числа меньше единицы выводиться ошибка:

4) Если все условия  удовлетворены, то выводиться  ответ:

 
 
 
 

10

5)После вывода ответа происходит запрос на ввод символа и при нажатии клавиши Enter программа выполняется с начала:

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

11

Список литературы:

  1. Зубков С.В. «Assembler для DOS, Windows и UNIX» г.Москва изд. «ДМК Пресс» 2000г.
  2. П.И. Рудаков, К.Г. Финогенов «Язык ассемблера: уроки программирования» г.Москва изд. «ДИОЛОГ-МИФИ» 2001г.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

12

Информация о работе Контрольная работа по "Программированию"