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 |
|
loop clr1 |
|
ret clrascval endp
;********************************************************************* bin_ascii proc
call clrascval lea si,ascval[31] xor cx,cx
xor bx,bx mov ten,0
mov ax,word ptr rezult mov dx,word ptr rezult+2
met1: cmp dx,0 jne met5 cmp ax,10 jbe met2
met5: sub ax,10 sbb dx,0 add bx,1 adc cx,0 jmp met1
met2: add al,ten mov ten,0 cmp al,10 je met2_1 jmp met2_2
met2_1: mov al,0 inc ten
met2_2: or al,30h mov [si],al
dec si cmp cx,0 je met3 jmp met4
116
met3: cmp bx,0 jne met4 ret
met4: mov ax,bx mov dx,cx xor bx,bx xor cx,cx jmp met1
bin_ascii 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
117
metb4: mov ax,bx mov dx,cx xor bx,bx xor cx,cx jmp metb1
bin_bin endp ;*******************************************************
CODESG ENDS |
;конец сегмента данных |
END begin |
;конец основной процедуры |
==================================================================
=
;l_2_2kln.asm КАЛИНИН МИХАИЛ, БИ11, 2004г. (лабораторная работа №2, модуль 2)
extrn soobe_1:byte,soobe_2:byte,soob0_err:byte,soob_b1:byte,soob_b2:byte,soob_d1:byte,soo b_d2:byte,b1:byte,b2:byte,d1:dword,d2:dword
extrn binval_d:dword,binval:word,binval_b:word,binval_w:word extrn mult10:word,rezult:dword,ten:byte,ascval:byte,num_ln:byte extrn
soob0_3:byte,soobl_err:byte,soobl:byte,soobl_1:byte,soobl_2:byte,soobl_3:byte,soobl_4: byte,soobl_5:byte,soobl_n1:byte,soobl_n2:byte,soobl_n3:byte,soobl_n4:byte,soobl_n5:by te
extrn namepar_b:byte,maxlen_b:byte,faktlen_b:byte,namefld_b:byte,namepar_w:byte,maxle n_w:byte,faktlen_w:byte,namefld_w:byte,namepar_d:byte,maxlen_d:byte,faktlen_d:byt e,namefld_d:byte,namepar:byte,maxlen:byte,faktlen:byte,namefld:byte
public main
CODESEG SEGMENT PARA 'CODE' |
;начало сегмента кода |
||
assume cs:codeseg |
|
|
|
MAIN PROC FAR |
|
;начало основной процедуры |
|
bg: |
call clrscr |
|
|
|
call cursor |
;вызов процедуры перевода курсора |
|
|
mov ah,09h |
;функция вывода на экран |
|
|
lea dx,soobl |
;загрузить адрес начала сообщения в dx |
|
|
int 21h |
;передача управления в DOS |
|
|
call cursor |
;вызов процедуры перевода курсора |
|
|
mov ah,09h |
;функция вывода на экран |
|
|
lea dx,soobl_n1 |
;загрузить адрес начала сообщения в dx |
|
|
int 21h |
;передача управления в DOS |
|
|
call cursor |
;вызов процедуры перевода курсора |
|
|
mov ah,09h |
;функция вывода на экран |
|
|
|
|
118 |
lea dx,soobl_n2 |
;загрузить адрес начала сообщения в dx |
|
int 21h |
|
;передача управления в DOS |
call cursor |
;вызов процедуры перевода курсора |
|
mov ah,09h |
;функция вывода на экран |
|
lea dx,soobl_n3 |
;загрузить адрес начала сообщения в dx |
|
int 21h |
|
;передача управления в DOS |
call cursor |
;вызов процедуры перевода курсора |
|
mov ah,09h |
;функция вывода на экран |
|
lea dx,soobl_n4 |
;загрузить адрес начала сообщения в dx |
|
int 21h |
|
;передача управления в DOS |
call cursor |
;вызов процедуры перевода курсора |
|
mov ah,09h |
;функция вывода на экран |
|
lea dx,soobl_n5 |
;загрузить адрес начала сообщения в dx |
|
int 21h |
|
;передача управления в DOS |
call cursor |
;вызов процедуры перевода курсора |
|
vvod_l: |
mov ah,0ah |
|
lea dx,namepar int 21h
xor ax,ax
lea si,namefld mov al,[si] and al,00fh mov binval,ax
cmp binval,1 je f1
cmp binval,2 je jmp_f2 cmp binval,3 je jmp_f3 cmp binval,4 je jmp_f4 cmp binval,5 je jmp_f5 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_l
119
jmp_f2: |
jmp f2 |
jmp_f3: |
jmp f3 |
jmp_f4: |
jmp f4 |
jmp_f5: |
jmp f5 |
;================================================================ f1: ;b1 or b2
call clrscr call cursor
mov ah,09h lea dx,soobl_1 int 21h
call cursor
;b1
mov ah,09h lea dx,soob_b1 int 21h
mov ah,0ah
lea dx,namepar_b int 21h
call cursor
call ascii_binb
mov ax,binval_b mov b1,al
;b2
mov ah,09h lea dx,soob_b2 int 21h
mov ah,0ah
lea dx,namepar_b int 21h
call cursor
call ascii_binb
120