Федеральное агенство по науке и образованию
Красноярский Государственный Технический Университет
Лабораторная работа по ЦУиМП ч.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
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.