Материал: 1328

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

; ввод с клавиатуры 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

Источник: https://studfile.net/preview/16407385/