775
.pdfmov ax,binval_b mov b2,al
mov al,b1 or al,b2
mov word ptr rezult,ax mov word ptr rezult[2],0
call bin_bin
mov ah,09h lea dx,ascval int 21h
call cursor
mov ah,09h lea dx,soobe_1 int 21h
call cursor
mov ah,09h lea dx,soob0_3 int 21h
call cursor
vvod_f1: 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 jmp_ret1 cmp binval,2 je jmp_bg1 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_f1
jmp_ret1: jmp rt
121
jmp_bg1: jmp bg ;===============================================================
f2: ;b1 xor b2
call clrscr call cursor
mov ah,09h lea dx,soobl_2 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
mov ax,binval_b mov b2,al
122
mov al,b1 xor al,b2
mov word ptr rezult,ax mov word ptr rezult[2],0
call bin_bin
mov ah,09h lea dx,ascval int 21h
call cursor
mov ah,09h lea dx,soobe_1 int 21h
call cursor
mov ah,09h lea dx,soob0_3 int 21h
call cursor
vvod_f2: 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 jmp_ret2 cmp binval,2 je jmp_bg2 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_f2
jmp_ret2: jmp rt jmp_bg2: jmp bg
123
;===============================================================
f3: ;b1 and b2
call clrscr call cursor
mov ah,09h lea dx,soobl_3 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
mov ax,binval_b mov b2,al
mov al,b1
124
and al,b2
mov word ptr rezult,ax mov word ptr rezult[2],0
call bin_bin
mov ah,09h lea dx,ascval int 21h
call cursor
mov ah,09h lea dx,soobe_1 int 21h
call cursor
mov ah,09h lea dx,soob0_3 int 21h
call cursor
vvod_f3: 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 jmp_ret3 cmp binval,2 je jmp_bg3 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_f3
jmp_ret3: jmp rt jmp_bg3: jmp bg
;===============================================================
125
f4: |
;b1 and not(b2) |
|
call clrscr |
|
call cursor |
|
mov ah,09h |
|
lea dx,soobl_4 |
|
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 |
|
mov ax,binval_b |
|
mov b2,al |
|
mov al,b1 |
|
not b2 |
|
and al,b2 |
126
mov word ptr rezult,ax mov word ptr rezult[2],0
call bin_bin
mov ah,09h lea dx,ascval int 21h
call cursor
mov ah,09h lea dx,soobe_1 int 21h
call cursor
mov ah,09h lea dx,soob0_3 int 21h
call cursor
vvod_f4: 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 jmp_ret4 cmp binval,2 je jmp_bg4 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_f4
jmp_ret4: jmp rt jmp_bg4: jmp bg
;================================================================
f5: |
;d1 and neg(d2) |
127
call clrscr call cursor
mov ah,09h lea dx,soobl_5 int 21h
call cursor
;d1
mov ah,09h lea dx,soob_d1 int 21h
mov ah,0ah
lea dx,namepar_d int 21h
call cursor
call ascii_bind
mov ax,word ptr binval_d mov dx,word ptr binval_d+2 mov word ptr d1,ax
mov word ptr d1[2],dx
;d2
mov ah,09h lea dx,soob_d2 int 21h
mov ah,0ah
lea dx,namepar_d int 21h
call cursor
call ascii_bind
mov ax,word ptr binval_d mov dx,word ptr binval_d+2
not ax not dx
128
add ax,1 adc dx,0
and ax,word ptr d1 and dx,word ptr d1+2 mov word ptr rezult,ax
mov word ptr rezult[2],dx
call bin_bin
mov ah,09h lea dx,ascval int 21h
call cursor
mov ah,09h lea dx,soobe_1 int 21h
call cursor
mov ah,09h lea dx,soob0_3 int 21h
call cursor
vvod_f5: 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 jmp_ret5 cmp binval,2 je jmp_bg5 mov ah,09h
lea dx,soobl_err int 21h
call cursor jmp vvod_f5
jmp_ret5: jmp rt
129
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 |
; фактор умножения |
LEA |
SI,NAMEFLD_w-1 |
; адрес ASCVAL |
MOV |
BL,FAKTLEN_w |
; длина ASCVAL |
MOV |
BH,0 |
|
|
|
130 |