2591
.pdfjmp vvod_f5 jmp_ret5: jmp rt jmp_bg5: jmp bg
;===============================================================
rt:
ret |
|
|
|
|
main endp |
|
|
|
|
cursor proc |
|
;\ |
|
|начало процедуры |
mov ah,02 |
; \ |
|установка курсора |
||
mov bh,00 |
; |
\ |
|номер экрана |
|
mov dh,num_ln |
; процедура |номер строки |
|||
inc num_ln |
; |
перевода |
|увеличение номера строки на 1 |
|
mov dl,00 |
; |
курсора |
|номер столбца |
|
int 10h |
; |
/ |
|передача управления в BIOS |
|
ret |
|
; / |
|возврат в основную программу |
|
cursor endp |
|
;/ |
|
|конец прцедуры |
ASCII_binb PROC |
|
|
; процедура перевода из ASCII в bin для байта |
|
mov |
mult10,1 |
|
|
|
MOV BINVAL_B,0 |
|
|||
XOR |
AX,AX |
|
|
|
XOR |
DX,DX |
|
|
|
MOV |
CX,10 |
|
|
;Фактор умножения |
LEA SI,NAMEFLD_b-1 |
;Адрес ASCVAL |
|||
MOV |
BL,FAKTLEN_b |
;Длина ASCVAL |
||
MOV |
BH,0 |
|
|
|
A21: |
|
|
|
|
MOV |
AL,[SI+BX] |
;Выбрать ASCII-символ |
||
AND |
AX,000FH |
;Очистить зону тройки |
||
MUL |
MULT10 |
|
;Умножить на фактор 10 |
|
ADD |
BINVAL_b,AX |
;Прибавить к двоичному |
||
MOV |
AX,MULT10 |
;Вычислить следующий |
||
MUL |
CX |
|
|
;Фактор умножения |
MOV |
MULT10,AX |
|
||
DEC |
BX |
|
|
;Последний. ASCII-символ? |
JNZ |
A21 |
|
|
;Нет – продолжить |
ret |
|
|
|
|
ASCII_binb ENDP
;************************************************************************
ASCII_binw PROC |
; процедура перевода из ASCII в bin для слова |
|
mov |
mult10,1 |
|
MOV |
BINVAL_W,0 |
|
XOR |
AX,AX |
|
XOR |
DX,DX |
|
MOV |
CX,10 |
; фактор умножения |
|
|
131 |
LEA SI,NAMEFLD_w-1
MOV |
BL,FAKTLEN_w |
MOV |
BH,0 |
B20: |
|
MOV |
AL,[SI+BX] |
AND |
AX,000FH |
MUL |
MULT10 |
ADD |
BINVAL_w,AX |
MOV |
AX,MULT10 |
MUL |
CX |
MOV |
MULT10,AX |
DEC |
BX |
JNZ |
B20 |
ret |
|
ASCII_binw ENDP
;адрес ASCVAL
;длина ASCVAL
;выбрать ASCII-символ
;очистить зону тройки
;умножить на фактор 10
;прибавить к двоичному ;вычислить следующий
;фактор умножения
;последний. ASCII-символ? ;если нет – продолжить
;************************************************************************
ascii_bind proc |
;процедура перевода из ASCII в bin для двойного слова |
|
mov |
mult10,1 |
|
mov word ptr BINVAL_d,0 |
||
mov word ptr BINVAL_d[2],0 |
||
xor |
ax,ax |
|
xor |
dx,dx |
|
mov |
CX,10 |
|
lea si,namefld_d-1 |
||
mov |
bl,faktlen_d |
|
mov |
bh,0 |
|
abd20: |
|
|
mov |
al,[si+bx] |
|
and |
ax,000fh |
|
mul |
mult10 |
|
add word ptr binval_d,ax |
||
adc word ptr binval_d+2,dx |
||
mov |
ax,mult10 |
|
mul |
cx |
|
mov |
mult10,ax |
|
dec |
bx |
|
jnz |
abd20 |
|
ret |
|
|
ascii_bind endp |
|
;***********************************************************************
clrascval proc |
;процедура очистки ASCVAL |
mov cx,32 |
|
mov si,31 |
|
clr1: and ascval[si],30h |
|
dec si |
|
|
132 |
loop clr1 |
|
|
ret |
|
|
clrascval endp |
|
|
clrscr proc |
|
|
mov ax,0600h ;\ |
|al=00 (весь экран), ah=06 (прокрутка) |
|
mov bh,07 |
; \ |
|чёрно-белый |
mov cx,0000 |
; очистка экрана |
|левая верхняя позиция |
mov dx,314fh |
; / |
|правая нижняя позиция |
int 10h |
;/ |
|передача управления в BIOS |
mov num_ln,0 clrscr endp
;************************************************************************ bin_bin proc
call clrascval lea si,ascval[31] xor cx,cx
xor bx,bx
mov ax,word ptr rezult mov dx,word ptr rezult+2
metb1: cmp dx,0 |
|
jne metb5 |
|
cmp ax,2 |
|
jb metb2 |
|
metb5: sub ax,2 |
|
sbb dx,0 |
|
add bx,1 |
|
adc cx,0 |
|
jmp metb1 |
|
metb2: or al,30h |
|
mov [si],al |
|
dec si |
|
cmp cx,0 |
|
je metb3 |
|
jmp metb4 |
|
metb3: cmp bx,0 |
|
jne metb4 |
|
ret |
|
metb4: mov ax,bx |
|
mov dx,cx |
|
xor bx,bx |
|
xor cx,cx |
|
jmp metb1 |
|
bin_bin endp |
|
CODESEG ENDS |
;конец сегмента данных |
END |
;конец основной процедуры |
|
133 |
Учебное издание
ЛЕОНИД ЕФИМОВИЧ ОЛЕЙНИК
ЯЗЫКИ ПРОГРАММИРОВАНИЯ
Учебное пособие
Для специальности 075500
Часть 2
ЛОГИЧЕСКИЕ ОПЕРАЦИИ. УСЛОВНЫЕ И БЕЗУСЛОВНЫЕ ПЕРЕХОДЫ, ОРГАНИЗАЦИЯ ЦИКЛОВ, ВЫЗОВ ПРОЦЕДУР,
ИСПОЛЬЗОВАНИЕ СТЕКА
Главный редактор Т. И. Калинина
Подписано к печати 24.05.12 Формат 60 x 90 1/16. Бумага писчая Гарнитура Таймс Оперативный способ печати Усл. п. л. , уч.-изд. л.
Тираж экз. 145 Заказ Цена договорная
Издательство СибАДИ 644099, Омск, ул. П. Некрасова, 10
Отпечатано в ПЦ издательства СибАДИ 644099, Омск, ул. П.Некрасова, 10
134