; ввод с клавиатуры w13 |
|
|||
mov ah,0Ah |
|
|||
lea dx,namepar_w |
|
|||
int 21h |
|
|||
call stroka |
|
|||
;mov mult10,1 |
|
|
;перевод из ASCII в bin |
|
call asc2bin_word |
||||
; |
xor ax,ax |
|
|
|
mov |
ax,binval_ |
w |
;переносим переведённый байт в w1 |
|
mov w1,ax |
|
|||
;mov ax,w1
cmp ax,32767 |
;w13 сравниваем с 32767 |
ja w13m |
;если >, то на метку w13m |
jmp w13e |
;если <=, то на метку w13e |
w13m: |
|
mov ah,09 |
;вывод на экран |
lea dx,strerr2 |
;сообщения об ошибке |
int 21h |
|
jmp w1b |
; переход на w1b |
w13e: |
|
ret entw13 endp
;************************************************************************ ; Перевод из ASCII в bin числа w19 ;************************************************************************
entw19 proc |
|
|
|
|
w19b: |
|
|
|
|
mov ah,09 |
; вывод сообщения 'w19= ' |
|||
lea dx,soob7 |
|
|||
int 21h |
|
|||
; ввод с клавиатуры w19 |
|
|||
mov ah,0Ah |
|
|||
lea dx,namepar_w |
|
|||
int 21h |
|
|||
call stroka |
|
|||
;mov mult10,1 |
|
|
;перевод из ASCII в bin |
|
call asc2bin_word |
||||
xor ax,ax |
;переносим переведённое значение в w19 |
|||
mov ax,binval_w |
|
|||
mov w19,ax |
|
|||
; |
mov ax,w19 |
|
|
|
cmp |
ax,32767 |
|
;w19 сравниваем с 32767 |
|
ja w19m |
;если >, то на метку w19m |
|||
jmp w19e |
;если <= , то на метку w19e |
|||
w19m: |
|
|
|
|
mov ah,09 |
;вывод на экран |
|||
lea dx,strerr2 |
;сообщения об ошибке |
|||
int 21h |
|
|||
jmp w19b |
; переход на w19b |
|||
w19e: |
|
|
|
|
|
|
|
|
86 |
ret entw19 endp
;************************************************************************ ; Перевод из ASCII в bin числа w21 ;************************************************************************
entw21 proc |
|
|
|
|
w21b: |
|
|
|
|
mov ah,09 |
; вывод сообщения 'w21= ' |
|||
lea dx,soob8 |
|
|||
int 21h |
|
|||
;ввод с клавиатуры w21 |
|
|||
mov ah,0ah |
|
|||
lea dx,namepar_w |
|
|||
int 21h |
|
|||
call stroka |
|
|||
;mov mult10,1 |
|
|
;перевод из ASCII в bin |
|
call asc2bin_word |
||||
xor ax,ax |
;переносим переведённое значение в w2 |
|||
mov ax, binval_w |
|
|||
mov w21,ax |
|
|||
; |
mov ax,w21 |
|
|
|
cmp |
ax,32767 |
|
;w21 сравниваем с 32767 |
|
ja w21m |
;если >, то на метку w21m |
|||
jmp w21e |
;если <=, то на метку w21e |
|||
w21m: |
|
|
|
|
mov ah,09 |
;вывод на экран |
|||
lea dx,strerr2 |
;сообщения об ошибке |
|||
int 21h |
|
|||
jmp w21b |
; переход на w21b |
|||
w21e: |
|
|
|
|
ret entw21 endp
;************************************************************************ ; Перевод из ASCII в bin числа d1 ;************************************************************************
entd1 proc |
|
|
|
|
|
d1b: |
|
|
|
|
|
mov ah,09 |
; вывод сообщения 'd1= ' |
||||
lea dx,soob11 |
|
||||
int 21h |
|
||||
mov ah,0ah |
; ввод с клавиатуры d1 |
||||
lea dx,namepar_d |
|
||||
int 21h |
|
||||
call stroka |
|
||||
;mov mult10,1 |
|
|
|
;перевод из ASCII в bin |
|
call asc2bin_dword |
|||||
; |
xor ax,ax |
|
|
|
|
xor bx,bx |
|
|
|
||
xor cx,cx |
|
||||
; |
xor dx,dx |
|
|
||
|
|
|
|
|
87 |
mov ax,word ptr binval_d |
;переносим переведённое значение в d1 |
||
mov dx,word ptr binval_d+2 |
|
|
|
mov word ptr d1,ax |
|
|
|
mov word ptr d1+2,dx |
|
|
|
; cmp dx,21474 |
;dx сравниваем с 21474 |
|
|
; ja d1m |
;если >, то на метку d1m |
|
|
jmp d1e |
;если <= , то на метку d1e |
||
d1m: |
|
|
|
mov ah,09 |
;вывод на экран |
||
lea dx,strerr3 |
;сообщения об ошибке |
||
int 21h |
|
|
|
jmp d1b |
; переход на d1b |
||
d1e: |
|
|
|
ret |
|
|
|
entd1 endp
;************************************************************************ ; Процедура перевода строки
;************************************************************************
stroka proc near |
;процедура перевода курсора на новую строку |
|
push |
|
|
inc |
ln |
|
mov |
ah,02 |
|
mov |
bh,00 |
|
mov |
dh,ln |
|
mov |
dl,00 |
|
int |
10h |
|
pop |
|
|
ret |
|
|
stroka endp |
|
|
printCF proc |
|
|
shr |
CFval,1 |
|
mov |
ah,09h |
|
jnc |
mcf0 |
|
lea |
dx,soobcfval1 |
|
jmp |
mcfe |
|
mcf0: lea |
dx,soobcfval0 |
|
mcfe: int |
21h |
|
call |
stroka |
|
ret |
|
|
printcf endp |
|
|
entcf proc |
|
|
CFb: |
|
|
mov |
ah,09h |
; вывод приглашения |
lea |
dx,soobcfent |
|
int |
21h |
|
mov |
ah,0ah |
; ввод с клавиатуры X |
lea |
dx,namepar_b |
|
int |
21h |
|
|
|
88 |
call |
stroka |
|
call |
asc2bin_byte |
;перевод из ASCII в bin |
;xor ax,ax
mov |
al,byte ptr binval_b |
|||
mov |
CFval,al |
|
;переносим переведённый байт в CFval |
|
cmp |
al,1 |
|
|
|
jna |
CFe |
|
|
|
mov |
ah,09 |
|
|
|
lea |
dx,strerr4 |
|||
int |
21h |
|
|
|
call |
stroka |
|
|
|
jmp |
Xb |
|
|
|
CFe: |
|
|
|
|
ret |
|
|
|
|
entcf endp |
|
|
|
|
; #34 |
|
w1 or w2 |
||
form34 proc |
ax,w1 |
|
|
|
mov |
|
|
|
|
or |
ax,w2 |
|
|
|
mov |
word ptr rezult,ax |
|||
mov |
word ptr rezult+2,0000h |
|||
ret |
|
|
|
|
form34 endp |
w1 xor |
w2 |
||
; #35 |
||||
form35 proc |
ax,w1 |
|
|
|
mov |
|
|
|
|
xor |
ax,w2 |
|
|
|
mov |
word ptr rezult,ax |
|||
mov |
word ptr rezult+2,0000h |
|||
ret |
|
|
|
|
form35 endp |
|
|
|
|
; #49 |
w13 and |
b13 |
||
form49 proc |
|
|
|
|
; |
xor |
ax,ax |
|
|
mov |
ax,w13 |
|
|
|
and |
al,b13 |
|
|
|
xor |
ah,ah |
|
|
|
mov |
word ptr rezult,ax |
|||
mov |
word ptr rezult+2,0000h |
|||
ret |
|
|
|
|
form49 endp |
w19 |
and |
not(b16) |
|
; #57 |
||||
form57 proc |
b16 |
|
|
|
not |
|
|
|
|
mov |
ax,w19 |
|
|
|
and |
al,b16 |
|
|
|
xor |
ah,ah |
|
|
|
mov |
word ptr rezult,ax |
|||
mov |
word ptr rezult+2,0000h |
|||
ret |
|
|
|
|
form57 endp |
w21 and neg(w2) |
|||
; #62 |
||||
form62 proc |
|
|
|
|
|
|
|
89 |
|
|
neg |
w2 |
|
mov |
ax,w21 |
|
and |
ax,w2 |
|
mov |
word ptr rezult,ax |
|
mov |
word ptr rezult+2,0000h |
|
ret |
|
form62 endp |
логический сдвиг слова влево на 2 |
|
; #3 |
|
|
form3 proc |
ax,w1 |
|
|
mov |
|
|
shl |
ax,1 |
|
shl |
ax,1 |
|
mov |
word ptr rezult,ax |
|
ret |
|
form3 endp |
арифметический сдвиг двойного слова вправо на 3 |
|
; #4 |
|
|
form4 proc |
ax,word ptr d1 |
|
|
mov |
|
|
mov |
dx,word ptr d1+2 |
f4b: |
mov |
cx,3 |
clc |
dx,1 |
|
|
sar |
|
|
jnc |
f4e |
|
shr |
ax,1 |
|
or |
ah,10000000b |
f4e: |
jmp |
f4ee |
shr |
ax,1 |
|
f4ee: |
loop |
f4b |
|
mov |
word ptr rezult,ax |
|
mov |
word ptr rezult+2,dx |
|
ret |
|
form4 endp |
циклический сдвиг байта влево на 4 |
|
; #5 |
|
|
form5 proc
;xor ax,ax
mov |
al,b1 |
|
|
; |
xor |
cx,cx |
|
mov |
cl,4 |
|
|
rol |
al,cl |
|
|
mov |
byte ptr rezult,al |
||
ret |
|
|
|
form5 endp |
логический сдвиг слова вправо через флаг переноса на 5 |
||
; #6 |
|||
form6 proc |
CFval,1 |
||
shr |
|||
mov |
ax,w1 |
|
|
mov |
cl,5 |
|
|
rcr |
ax,cl |
|
|
mov |
word ptr rezult,ax |
||
rcl |
CFval,1 |
||
ret |
|
|
|
form6 endp |
|
|
;конец сегмента кода |
codesg ends |
|
|
|
end start |
|
|
|
|
|
|
|
90