Изучение стандартных функций прерывания DOS. Программа преобразования двухбайтового кода ASCLL

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

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

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

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

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

Изучение стандартных функций прерывания DOS

вариант №15

выполнил: студент гр.Р52-4

проверил:

Красноярск 2005

1.  Задание: написать программу преобразования двухбайтового кода ASCII в соответствующее однобайтовое число. Организовать возможность ввода с клавиатуры, вывода на экран результата, а также считывание и запись данных в файл.

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


3.  Алгоритм работы программы.

Вначале, с клавиатуры или из файла считываются 4 цифры, соответствующие 2-байтовому ASCII коду. Каждой цифре соответствует тетрада ASCII кода. Чтобы получить тетрады, ASCII код каждой введенной цифры преобразуется в число. Полученные числа записываются в соответствующие тетрады и выводятся на экран или в файл.

4.  Листинг программы.

.model tiny

.286

.code

org 100h

main:

mov ax,cs

mov ds,ax

mov dx,offset mes

mov ah,09h

int 21h

mov ah,01h

int 21h

push ax

cmp al,31h

ja file_

;-------Ввод с клавиатуры----------------------mov ah,9

mov dx,offset mes1

int 21h

mov ah,0ah

mov dx,offset buf

int 21h

jmp handler

;-------Ввод из файла--------------------------file_:

mov ax,3d00h

mov dx,offset path1

int 21h

jnc done

pop ax

mov ah,9

mov dx,offset mes3

int 21h

jmp exit

done:

mov bx,ax

mov ah,3fh

mov cx,4

mov dx,offset buf+2

int 21h

mov ah,3eh

int 21h

;-------Преобразование ASCII кода в число------handler:

mov ax,word ptr buf+2

call convert

mov dl,ah

mov ax,word ptr buf+4

call convert

mov dh,ah

mov chislo,dx

;-------Вывод результата в файл/на экран-------pop ax

cmp al,32h

jb tv_out

mov ax,3c00h

mov dx,offset path2

int 21h

mov bx,ax

mov ah,40h

mov cx,2

mov dx,offset chislo

int 21h

mov ah,3eh

int 21h

jmp exit

tv_out:

push dx

mov ah,9

mov dx,offset mes2

int 21h

pop dx

mov ah,2

int 21h

mov dl,dh

int 21h

exit:

ret

convert proc

cmp al,39h

ja a1

sub al,30h

jmp a2

a1:

sub al,37h

a2:         

cmp ah,39h

ja b1

sub ah,30h

jmp b2

b1:

sub ah,37h

b2:

shl al,4

add ah,al

ret

convert endp

chislo dw 0

mes db "Считывание с клавиатуры:'1', из файла:'2'",0dh,0ah,"$"

mes1 db 0dh,0ah,"Введите двухбайтовый код ASCII:$"

mes2 db 0dh,0ah,"Однобайтовое число:$"

mes3 db 0dh,0ah,"Файл input.txt не найден!$"

buf db 5,0,4 dup (0),0dh

path1 db "input.txt",0

path2 db "output.txt",0

end main

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

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

Тип:
Курсовые работы
Размер файла:
178 Kb
Скачали:
0