Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

epd629

.pdf
Скачиваний:
17
Добавлен:
02.05.2015
Размер:
1.05 Mб
Скачать

jz 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]