Материал: 775

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

BIN2ASC proc

lea si,ascval[19]

m1:

;cmp word ptr rezult[6],0

;jne m2

;cmp word ptr rezult[4],0

;jne m2

cmp word ptr rezult[2],0 jne m2

cmp word ptr rezult,10 jnb m2

mov ax,word ptr rezult or al,30h

mov [si],al dec si jmp m3

m2: sub word ptr rezult,10 sbb word ptr rezult[2],0

;sbb word ptr rezult[4],0

;sbb word ptr rezult[6],0 add word ptr kol,1 adc word ptr kol[2],0

;adc word ptr kol[4],0

;adc word ptr kol[6],0

jmp m1

m3:

;cmp word ptr kol[6],0

;jne m4

;cmp word ptr kol[4],0

;jne m4

cmp word ptr kol[2],0

jne m4

cmp word ptr kol,0 jne m4

ret

m4:

mov ax,word ptr kol mov word ptr rezult,ax mov ax,word ptr kol[2] mov word ptr rezult[2],ax

;mov ax,word ptr kol[4]

;mov word ptr rezult[4],ax

;mov ax,word ptr kol[6]

;mov word ptr rezult[6],ax mov word ptr kol,0 mov word ptr kol[2],0

;mov word ptr kol[4],0

;mov word ptr kol[6],0

76

jmp m1 BIN2ASC endp

clrascval proc mov cx,20 mov si,19

clr1: and ascval[si],30h dec si

loop clr1 ret

clrascval endp

;==================================================================

ASC2BIN_BYTE 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

 

 

ASC2BIN_BYTE ENDP

;==================================================================

ASC2BIN_WORD 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

 

B20:

 

 

MOV

AL,[SI+BX]

; выбрать ASCII-символ

AND

AX,000FH

; очистить зону тройки

MUL

MULT10

; умножить на фактор 10

 

 

77

ADD

BINVAL_w,AX

; прибавить к двоичному

MOV

AX,MULT10

; вычислить следующий

MUL

CX

; фактор умножения

MOV

MULT10,AX

 

DEC

BX

; последний. ASCII-символ?

JNZ

B20

; нет – продолжить

ret

ASC2BIN_WORD ENDP

;==================================================================

ASC2BIN_dword proc ;процедура перевода из ASCII в bin для двойного слова mov mult10,1

mov binval_d,0 xor ax,ax xor dx,dx mov cx,10

lea si,namefld_d-1 mov bl,faktlen_d mov bh,0

abd20:

mov al,[si+bx] and ax,000fh mul mult10

add word ptr binval_d,ax adc word ptr binval_d+2,dx mov ax,mult10

mul cx

mov mult10,ax dec bx

jnz abd20 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

 

78

xor ax,ax

;переносим переведённый байт в b1

mov al,byte ptr binval_b

 

mov b1,al

 

mov al,b1

; В1 сравниваем с 127

cmp al,127

 

ja B1M

; если > , то на метку osi

jmp B1E

; если <= , то на метку www

B1M:

 

mov ah,09

;вывод на экран

lea dx,STRERR1

;сообщения об ошибке

int 21h

 

jmp B1B

; переход на QQ1

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

 

;В2 сравниваем с 127

cmp al,127

 

 

ja B2M

 

;если >, то на метку ooo

jmp B2E

 

;если <=, то на метку iii

B2M:

 

 

mov ah,09

 

;вывод на экран

lea dx,STRERR1

;сообщения об ошибке

int 21h

 

 

jmp B2B

 

; переход на o1o

B2E:

 

 

RET

 

 

 

 

79

ENTB2 ENDP

;*************************************************************************** ; перевод из ASCII в bin числа b3 ;***************************************************************************

ENTB3 PROC

 

B3B:

 

 

mov ah,09

; вывод сообщения 'b3= '

lea dx,soob4

 

int 21h

 

 

;

 

ввод с клавиатуры b3

mov ah,0Ah

 

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

 

; В3 сравниваем с 127

cmp al,127

 

 

ja B3M

 

; если >, то на метку ooo1

jmp B3E

 

; если <= , то на метку iii1

B3M:

 

 

mov ah,09

 

; вывод на экран

lea dx,STRERR1

; сообщения об ошибке

int 21h

 

 

jmp B3B

 

; переход на o2o

B3E:

 

 

RET ENTB3 ENDP

;*************************************************************************** ; перевод из ASCII в bin числа b13 ;***************************************************************************

ENTB13 PROC

 

B13B:

 

;

вывод сообщения 'b13= '

mov ah,09

 

lea dx,soob13

 

int 21h

 

;

ввод с клавиатуры b13

mov ah,0Ah

 

lea dx,NAMEPAR_b

 

int 21h

 

CALL STROKA

80

 

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