Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пример. Вывод горизонтальной линии.




mov CX, 10

m1: mov AH, 14

mov AL, 196 ; ASCII код '-'

mov BH, 0

int 10h

loop m1

Пример. Вывод горизонтальной линии со сменой атрибута. Желтые символы на синем фоне.

mov AH, 9

mov BH, 0 ; текущая страница

mov CX, 15

mov AL, '=' ; выводимый символ

mov BL, 0001111Ob

int 10h

При описании переменных в сегменте данных данные можно описывать с помощью псевдооператоров DB, DW, DD.

Например:

A DB 1, 2, 3, 4

B DW 1122h,344h

C DD 11223344h, 55667788h

Если требуется работа с байтами, то обращение к ним осуществляется с помощью оператора byte ptr:

mov AL, A ; AL = 1

mov AL, byte ptr B ; AL = 22h

mov AL, byte ptr C ; AL = 44h

Во втором и третьих примерах в регистр AL будут записаны младшие байты слов и двойных слов.

Для обращения к старшим байтам нужно к адресу добавить необходимое смещение:

mov AL, byte ptr B+1 ; AL = 11

mov AL, byte ptr C+3 ; AL = 11

Если требуется работа со словами, то обращение к ним осуществляется с помощью оператора word ptr:

mov AX, word ptr A ; AX = 0201h

mov AX, B ; AX = 1122h

mov AX, word ptr C ; AX = 3344h

При обращении к старшим словам нужно к адресу добавить смещение для слов (кратное 2):

mov AX, word ptr C+2 ; AX = 1122h

В программах могут использоваться константы, которые описываются с помощью псевдооператоров EQU или " = "

; в сегменте данных

К EQU 255

A DB ?

; в сегменте кода

mov A, K

В данном случае второй операнд является непосредственным, а первый операнд указывает адрес.

Массивы можно задавать следующим образом:

mas_A DB 1, 2, 3, 4, 5, 6, 7, 8, 9

mas_B DB 31h, 32h, ..., 39h

mas_C DB '1, 2, 3, 4, 5, 6, 7, 8, 9' ; данный массив занимает в памяти 17 байтов,

;т.к. включает в себя разделители (запятые)

mas_D DB 1B, 10B, 11B, 100B, 101B, 110B, 111B, 1000B ; Массив задан

; в двоичном коде

Массивы, заданные в двоичном и десятичном виде, перед выдачей на экран необходимо преобразовать в ASCII-коды.

mov AL, 2

mov DL, mas[SI]

add DL, 30h ; получение ASCII - кода

int 21h

Текстовые строки эадаются в ASCII-кодах, т.е. обязательно заключаются в кавычки.

string_A DB 'При использовании функции 9'

DB 'INT 21h текстовая строка', 10, 13

DB 'Должна заканчиваться символом '

DB 'доллара $'

string_B DB 'При использовании функции 40h'

DB 'INT 21h конец текстовой строки', 10, 13

DB 'Определяется по счетчику $ '

При выводе рамки на дисплей ее можно описать в сегменте данных в виде текстовой строки:

RAMKA DB 10,13, 10 DUP (20h), ' ' , 10, 13

DB 10 DUP (20h), ' ' , 10, 13

DB 10 DUP (20h), ' ', 10, 13

DB 10 DUP (20h), ' $'

или

RAMKA DB 10, 13, 10 DUP (20h), 218, 8 DUP (196), 191

DB 10, 13, 10 DUP (20h), 179, 8 DUP (20h), 179

DB 10, 13, 10 DUP (20h), 179, 8 DUP (20h), 179

DB 10, 13, 10 DUP (20h), 192, 8 DUP (196), 217, '$'

ASCII - коды псевдографики для рисования рамок:

 

         
               
             
               
           

 

При выводе символа на дисплей в регистр DL (функция 2 INT 21h) загружается ASCII-код символа:

mov DL, 41h ; ASCII-код символа 'A'

или

mov DL, 'A'

Пример.

sseg segment

DB 128 dup (?)

sseg ends

data segment

string DB 'текстовая строка'

stringln EQU $-string

data ends

code segment

assume DS:data, SS:sseg, CS:code

start:

mov AX, data

mov DS, AX

; вывод строки на экран

mov AH, 40h

mov BH, 1

mov CX, stringln

lea DX, string

int 21h

; завершение программы

mov AH, 4ch

int 21h

code ends

end start


Поделиться:

Дата добавления: 2015-09-15; просмотров: 50; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты