Вывод на экран шестнадцатеричного числа 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вывод на экран шестнадцатеричного числа



 

Вывод на экран одной шестнадцатиричной цифры:

 

Сhar ASCII Code (HEX)   В программе шестнадцатеричное число должно начинаться с 0 (для того, чтобы отличить от меток или от обозначения регистров), если число начинается с буквы. Например, число А – 0Ah, а не AH – чтобы не путать с регистром AH.   Пусть в регистре BL шестнадцатеричное число 0h¸0Fh. Тогда получение ASCII кода числа осуществляется с помощью следующей программы:   BL = BL+ 030h if BL ³03Ah then BL=BL+07h   На ассемблере: MOV AH, 02H MOV DL, BL ADD DL, 030H CMP DL, 03AH JL PRINT
/ 2F +030H
   
   
   
   
   
   
   
   
   
   
: 3A  
; 3B
  3C
= 3D
  3E
? 3F
@  

 

 

A   +037H ADD DL, 07H PRINT: INT 21H INT 20H
B  
C  
D  
E  
F  
G    

 

 

Процедуры

 

Это список инструкций, который можно вызвать из различных мест программы. Аналог функции в С и подпрограммы.

Процедуру можно вызвать с помощью CALL имя, и выход с помощью REТ. Адрес возврата запоминается в стеке.

САLL имя

…….

имя: …

процедура
…….

….

….

RET

……

 

Теперь напишем программу распечатки содержимого регистра BL.

 

MOV DL, BL

RCR DL, 4; сдвиг вправо на 4 бита

MOV DL, BL

CALL PRINT_HEX

INT 20H

PRINT_HEX:

AND DL, 0FH

ADD DL, 030H

CMP DL, 03AH

JL PRINT

ADD DL, 07H

PRINT: INT 21H

RET

 

Ввод символов

Вызов DOS через INT 21H, предварительно загрузив в AH единицу, обеспечив ввод одного символа.

Решим следующую задачу – сформировать байт из шестнадцатеричного числа (из 2-х шестнадцатиричных цифр). Если вводится символ, который нельзя преобразовать в шестнадцатеричную цифру, то – звонок.

 

CALL INP_HEX

MOV AL, DL

RCL DL, 4

CALL INP_HEX

ADD DL, AL

MOV AH, 02

INT 21H

INT 20H

INP_HEX:

PUSH DX

MOV AH, 08; считать символ, но не выводить его на экран

LOOP: INT 21H

CMP AL, 030H

JB BEEP

CMP AL, 046H

JA BEEP

CMP AL, 039H

JA CONT

MOV AH, 02

MOV DL, AL

SUB AL, 030H

POP DX

RET

BEEP: INT 21H

CONT: CMP AL, 041H

JB LOOP

MOV AH, 02

MOV DL, AL

INT 21H

SUB AL,037H

POP DX

RET

 

 

Вывод на экран двоичного числа

 

MOV BX, 0A3C5H

MOV CX, 0008

CYCLE:

RCL BX, 1; циклический сдвиг BX на 1 разряд вправо

LOOP CYCLE; пока СХ=СХ-1¹0

INT 20H

 

MOV AH, 02; номер функции в AH – печать символа из DL

MOV CX, 0008; количество сдвигов

MET: MOV DL, 00

RCL BL, 1

ADC DL, 30

INT 21H

LOOP MET

INT 20H

 

 

РАБОТА С ДИСКОВЫМИ ФАЙЛАМИ

 

В DOS доступны следующие функции работы с файлами:

 

39h – создать каталог файлов (аналогично функции MKDIR DOS)

перед использованием

DS:DX – адрес ASCIIZ – строки –имя пути для нового каталога.

Ошибки в АХ: 3 - путь не найден

5 – ошибка в доступе

 

3Аh – удалить каталог

DS:DX – адрес ASCIIZ – строки –имя пути для нового каталога.

Ошибки в АХ те же.

 

3Вh – сменить текущий каталог

DS:DX – то же

АХ – 3

 

3Сh – создать файл (CREATE)

открывает существующий или создает новый файл.

DS:DX – адрес ASCIIZ строки.

СХ – аттрибут файла

АХ – возвращается логический номер файла.

 

Логический номер файла или дескриптор – это 16-битовое число, используемое DOS как указатель на систему таблиц. Логический номер освобождается после закрытия файла и может быть использован повторно.

Существует пять стандартных логических номеров 0-4, которые автоматически предоставляются любой программе. Остальные номера с большими логическими номерами DOS предоставляет по требованию.

 

Логический номер Использование Устройство по умолчанию
  Стандартный ввод (клавиатура) CON:
  Стандартный вывод (экран) CON:
  Стандартное устройство вывода при ошибке CON:
  Стандартное вспомогательное устройство AUX:
  Стандартное устройство печати PRN:

 

АSCIIZ-строка

Функции DOS, работающие с файлами, требуют задания имени и пути к файлу в виде ASCIIZ строки. ASCIIZ строка состоит из обычных ASCII символов, за которыми следует нулевой байт. Типичная строка выглядит наподобие:

C:\DIRECTORY1\DIRECTORY2\FILENAME.EXT

В качестве разделителя может быть как прямая, так и обратная косая черта. (имя дисковода может быть опущено)



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 365; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.242.165.255 (0.016 с.)