Что такое скан-код, ASCII-код?
Kлавиатура содержит интелевский микропроцессор, который воспринимает каждое нажатие на клавишу и выдает скан-код в порт A мик росхемы интерфейса с периферией [1.1.1], расположенной на
системной плате. Скан-код это однобайтное число, младшие 7 битов которого представляют идентификационный номер, присвоенный каждой клавише. Таблица скан-кодов приведена в [3.3.2]. Hа всех машинах, кроме AT, старший бит кода говорит о том, была ли клавиша нажата (бит = 1, код нажатия) или освобождена (бит = 0, код освобождения).
ASCII КОД
Для целей стандартизации в микрокомпьютерах используется aмериканский национальный стандартный код для обмена информа цией ASCII (American National Standard Code for Information Interchange). Читается как "аски" код (прим. переводчика). Именно по этой причине комбинация бит 01000001 обозначает букву A. Наличие стандартного кода облегчает обмен данными между различными устройствами компьютера. 8-битовый рассширенный ASCII-код, используемый в PC обеспечивает представление 256 символов, включая символы для нацио нальных алфавитов. В приложении 1 приведен список символов ASCII кода, а в главе 8 показано как вывести на экран боль шинство из 256 символов.
3.РАСШИРЕННЫЙ ASCII КОД
ASCII-коды от 128 до 255 (шест. 80-FF) представляют собой ряд специальных символов полезных при формировании запросов, меню, специальных значков с экранными атрибутами. Например, используя cледующие символы можно нарисовать прямоугольник.
1. Описание работ команд ADD, ADC, SUB, SBB ADD (ADDition) Сложение Схема команды: add приемник,источник Назначение: сложение двух операндов источник и приемник размерностью байт, слово или двойное слово. Алгоритм работы: · сложить операнды источник и приемник; · записать результат сложения в приемник; · установить флаги. Состояние флагов после выполнения команды: OF SF ZF AF PF CF r r r r r r Применение: Команда add используется для сложения двух целочисленных операндов. Результат сложения помещается по адресу первого операнда. Если результат сложения выходит за границы операнда приемник (возникает переполнение), то учесть эту ситуацию следует путем анализа флага cf и последующего возможного применения команды adc. Например, сложим значения в регистре ax и области памяти ch. При сложении следует учесть возможность переполнения. ;пример фрагмента программы сложения значения в AX и области паямяти CHchiclo dw 2015rez dd 0... add ax,chislo ;(ax)=(ax)+ch mov word ptr rez,ax jnc dop_sum ;переход, если результат не вышел за разрядную сетку adc word ptr rez+2,0 ;расширить результат, для учета переноса ;в старший разрядdop_sum:... См. также: команды adc, sub, sbb, xadd ![]() |
SUB
(SUBtract) Вычитание
Схема команды: | sub операнд_1,операнд_2 |
Назначение: целочисленное вычитание.
Алгоритм работы:
· выполнить вычитание операнд_1=операнд_2-операнд_1;
· установить флаги.
Состояние флагов после выполнения команды:
OF | SF | ZF | AF | PF | CF |
r | r | r | r | r | r |
Применение:
Команда sub используется для выполнения вычитания целочисленных операндов или для вычитания младших частей значений многобайтных операндов.
;пример фрагмента программы, в которой ;выполняется вычитание 64-битных значений: vich_1-vich_2vich_1 dd 2 dup (0)vich_2 dd 2 dup (0)rez dd 2 dup (0)...;ввести значения в поля vich_1 и vich_2:;младший байт по младшему адресу... mov eax,vich_1 sub eax,vich_2 ;вычесть младшие половинки чисел mov rez,eax ;младшая часть результата mov eax,vich_1+4 sbb eax,vich_2+4 ;вычесть старшие половинки чисел mov rez+4,eax ;старшая часть результата |
SBB
(SuBtract with Borrow) Вычитание с заемом
Схема команды: | sbb операнд_1,операнд_2 |
Назначение: целочисленное вычитание с учетом результата предыдущего вычитания командами sbb и sub (по состоянию флага переноса cf).
Алгоритм работы:
· выполнить сложение операнд_2=операнд_2+(cf);
· выполнить вычитание операнд_1=операнд_1-операнд_2;
Состояние флагов после выполнения команды:
OF | SF | ZF | AF | PF | CF |
r | r | r | r | r | r |
Применение:
Команда sbb используется для выполнения вычитания старших частей значений многобайтных операндов с учетом возможного предыдущего заема при вычитании младших частей значений этих операндов.
;пример фрагмента программы, в которой ;выполняется вычитание 64-битных значений: vich_1-vich_2vich_1 dd 2 dup (0)vich_2 dd 2 dup (0)rez dd 2 dup (0)...;ввести значения в поля vich_1 и vich_2:;младший байт по младшему адресу... mov eax,vich_1 sub eax,vich_2 ;вычесть младшие половинки чисел mov rez,eax ;младшая часть результата mov eax,vich_1+4 sbb eax,vich_2+4 ;вычесть старшие половинки чисел mov rez+4,eax ;старшая часть результата |