epd629
.pdfjz abd2
add ax,word ptr mult10 adc dx,word ptr mult10[2] dec bl
jmp abd1
abd2: add word ptr binval_d,ax adc word ptr binval_d[2],dx mov bl,9
mov dx,word ptr mult10[2] mov ax, word ptr mult10
abd3: cmp bl,0 jz abd4
add word ptr mult10,ax adc word ptr mult10[2],dx dec bl
jmp abd3 abd4: dec si
loop met1_d
mov dx,word ptr binval_d[2] mov ax,word ptr binval_d jmp end_error_d
error_d:
call stroka mov ah,09h lea dx,strerr3 int 21h
;mov osh_v,1 end_error_d:
ret asc2bin_dword endp
;*************************************************************************
;Перевод из ASCII в bin числа b1 ;*************************************************************************
entb1 proc b1b:
; |
вывод сообщения 'b1= ' |
|
||
|
mov ah,09 |
|
||
|
lea dx,soob2 |
|
||
|
int 21h |
|
||
; |
ввод с клавиатуры b1 |
|
||
|
mov ah,0Ah |
|
||
|
lea dx,namepar_b |
|
||
|
int 21h |
|
||
|
call stroka |
|
||
|
call asc2bin_byte |
;перевод из ASCII в bin |
||
|
xor ax,ax |
;переносим переведённый байт в b1 |
||
|
mov al,byte ptr binval_b |
|
||
|
mov b1,al |
|
||
|
; |
mov al,b1 |
|
;b1 сравниваем с 127 |
|
cmp al,127 |
|
||
|
|
|
|
81 |
ja b1m |
;если >, то на метку b1m |
jmp b1e |
;если <= , то на метку b1e |
b1m: |
|
mov ah,09 |
;вывод на экран |
lea dx,strerr1 |
;сообщения об ошибке |
int 21h |
|
jmp b1b |
; переход на B1B |
b1e: |
|
ret entb1 endp
;************************************************************************* ; Перевод из ASCII в bin числа b2 ;*************************************************************************
entb2 proc |
|
b2b: |
|
mov ah,09 |
; вывод сообщения: 'b2= ' |
lea dx,soob3 |
|
int 21h |
|
;ввод с клавиатуры b2 mov ah,0Ah
lea dx,namepar_b int 21h
;mov mult10,1
call stroka |
|
||
call asc2bin_byte |
;перевод из ASCII в bin |
||
xor ax,ax |
;переносим переведённый байт в b2 |
||
mov al,byte ptr binval_b |
|
||
mov b2,al |
|
||
; |
mov al,b2 |
|
;b2 сравниваем с 127 |
cmp al,127 |
|
||
ja b2m |
;если >, то на метку b2m |
||
jmp b2e |
;если <= , то на метку b2e |
||
b2m: |
|
|
|
mov ah,09 |
;вывод на экран |
||
lea dx,strerr1 |
;сообщения об ошибке |
||
int 21h |
|
||
jmp b2b |
; переход на b2b |
||
b2e: |
|
|
|
ret entb2 endp
;************************************************************************ ; Перевод из ASCII в bin числа b3 ;************************************************************************
entb3 proc |
|
b3b: |
|
mov ah,09 |
; вывод сообщения 'b3= ' |
lea dx,soob4 |
|
int 21h |
|
; ввод с клавиатуры b3 |
|
mov ah,0Ah |
|
|
82 |
lea dx,namepar_b int 21h
call stroka
;mov mult10,1
;перевод из ASCII в bin
call asc2bin_byte
; переносим переведённый байт в b3 xor ax,ax
mov al,byte ptr binval_b mov b3,al
;mov al,b3
cmp al,127 |
;b3 сравниваем с 127 |
ja b3m |
;если >, то на метку b3m |
jmp b3e |
;если <= , то на метку b3e |
b3m: |
|
mov ah,09 |
;вывод на экран |
lea dx,strerr1 |
;сообщения об ошибке |
int 21h |
|
jmp b3b |
; переход на b3b |
b3e: |
|
ret entb3 endp
;************************************************************************ ; Перевод из ASCII в bin числа b13 ;************************************************************************ entb13 proc
b13b:
;вывод сообщения 'b13= ' mov ah,09
lea dx,soob5 int 21h
;ввод с клавиатуры b13 mov ah,0Ah
lea dx,namepar_b int 21h
call stroka |
|
||
call asc2bin_byte |
;перевод из ASCII в bin |
||
xor ax,ax |
;переносим переведённый байт в b13 |
||
mov al,byte ptr binval_b |
|
||
mov b13,al |
|
||
; |
mov al,b13 |
|
;b13 сравниваем с 127 |
cmp al,127 |
|
||
ja b13m |
;если >, то на метку b13m |
||
jmp b13e |
;если <=, то на метку b13e |
||
b13m: |
|
|
|
mov ah,09 |
;вывод на экран |
||
lea dx,strerr1 |
;сообщения об ошибке |
||
int 21h |
|
|
|
jmp b13b |
; переход на b13b |
||
b13e: |
|
|
|
|
|
|
83 |
ret entb13 endp
;************************************************************************ ; Перевод из ASCII в bin числа b16 ;************************************************************************ entb16 proc
b16b:
;вывод сообщения 'b16= ' mov ah,09
lea dx,soob6 int 21h
;ввод с клавиатуры b16 mov ah,0Ah
lea dx,namepar_b int 21h
call stroka |
|
||
call asc2bin_byte |
;перевод из ASCII в bin |
||
xor ax,ax |
;переносим переведённый байт в b16 |
||
mov al,byte ptr binval_b |
|
||
mov b16,al |
|
||
; |
mov al,b16 |
|
;b16 сравниваем с 127 |
cmp al,127 |
|
||
ja b16m |
|
|
;если >, то на метку b16m |
jmp b16e |
;если <= , то на метку b16e |
||
b16m: |
|
|
|
mov ah,09 |
;вывод на экран |
||
lea dx,strerr1 |
;сообщения об ошибке |
||
int 21h |
|
|
|
jmp b16b |
; переход на b16b |
||
b16e: |
|
|
|
ret entb16 endp
;************************************************************************ ; Перевод из ASCII в bin числа w1 ;************************************************************************
entw1 proc |
|
|
|
|
w1b: |
|
|
|
|
mov ah,09 |
; вывод сообщения 'w1= ' |
|||
lea dx,soob7 |
|
|||
int 21h |
|
|||
; ввод с клавиатуры w1 |
|
|||
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 |
|
|||
|
|
|
|
84 |
;mov ax,w1
cmp ax,32767 |
;w1 сравниваем с 32767 |
ja w1m |
;если >, то на метку w1m |
jmp w1e |
;если <= , то на метку w1e |
w1m: |
|
mov ah,09 |
;вывод на экран |
lea dx,strerr2 |
;сообщения об ошибке |
int 21h |
|
jmp w1b |
; переход на w1b |
w1e: |
|
ret entw1 endp
;************************************************************************
; Перевод из ASCII в bin числа w2 ;************************************************************************
entw2 proc |
|
|
|
|
w2b: |
|
|
|
|
mov ah,09 |
; вывод сообщения 'w2= ' |
|||
lea dx,soob8 |
|
|||
int 21h |
|
|||
; ввод с клавиатуры w2 |
|
|||
mov ah,0Ah |
|
|||
lea dx,namepar_w |
|
|||
int 21h |
|
|||
call stroka |
|
|||
;mov mult10,1 |
|
|
;перевод из ASCII B BIN |
|
call asc2bin_word |
||||
xor ax,ax |
;переносим переведённый байт в w2 |
|||
mov ax, binval_w |
|
|||
mov w2,ax |
|
|||
; |
mov ax,w2 |
|
|
|
cmp |
ax,32767 |
|
;w2 сравниваем с 32767 |
|
ja w2m |
;если >, то на метку w2m |
|||
jmp w2e |
;если <= , то на метку w2e |
|||
w2m: |
|
|
|
|
mov ah,09 |
;вывод на экран |
|||
lea dx,strerr2 |
;сообщения об ошибке |
|||
int 21h |
|
|||
jmp w2b |
; переход на w2b |
|||
w2e: |
|
|
|
|
ret entw2 endp
;************************************************************************ ; Перевод из ASCII в bin числа w13 ;************************************************************************
entw13 proc |
|
w13b: |
|
mov ah,09 |
; вывод сообщения 'w13= ' |
lea dx,soob7 |
|
int 21h |
|
|
85 |
; ввод с клавиатуры 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