Материал: 775

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

dec al mov si,ax mov bx,1

met1_b:

mov al,field_b[si] cbw

cmp ax,30h jb error_b cmp ax,39h ja error_b and al,0fh mul bx

add prom,ax mov ax,bx mov bx,10 mul bx mov bx,ax dec si

loop met1_b mov ax,prom jmp end_error_b

error_b:

call cursor mov ah,09h

lea dx,oshibka_v int 21h

mov osh_v,1 end_error_b:

ret ASCII_bin_b endp

ASCII_bin_w proc ;процедура перевода из ASCII в bin для слова (Вход: список параметров vvod_w должен быть заполнен; выход: ax=число в bin)

xor ax,ax xor cx,cx mov prom,ax mov osh_v,al

mov al,fact_w mov cl,al

dec al mov si,ax mov bx,1

met1_w:

mov al,field_w[si] cbw

cmp ax,30h jb error_w cmp ax,39h

96

ja error_w and al,0fh mul bx

add prom,ax mov ax,bx mov bx,10 mul bx mov bx,ax dec si

loop met1_w mov ax,prom jmp end_error_w

error_w:

call cursor mov ah,09h

lea dx,oshibka_v int 21h

mov osh_v,1 end_error_w:

ret ASCII_bin_w endp

ASCII_bin_d proc ;процедура перевода из ASCII в bin для дв. слова для МП 8086 (Вход: список параметров vvod_d должен быть заполнен; выход: dx:ax=число в bin)

xor ax,ax xor bx,bx xor cx,cx xor dx,dx

mov word ptr promd,ax mov word ptr promd[2],ax mov word ptr fml[2],ax mov word ptr fml,1

mov osh_v,al mov al,fact_d mov cl,al dec al

mov si,ax met1_d:

mov bl,field_d[si] cmp bx,30h

jb error_d cmp bx,39h ja error_d and bl,0fh

mov dx,0 mov ax,0 abd1: cmp bl,0

97

jz abd2

add ax,word ptr fml adc dx,word ptr fml[2] dec bl

jmp abd1

abd2: add word ptr promd,ax adc word ptr promd[2],dx mov bl,9

mov dx,word ptr fml[2] mov ax, word ptr fml

abd3: cmp bl,0 jz abd4

add word ptr fml,ax adc word ptr fml[2],dx dec bl

jmp abd3

abd4:

dec si

loop met1_d

mov dx,word ptr promd[2] mov ax,word ptr promd jmp end_error_d

error_d:

call cursor mov ah,09h

lea dx,oshibka_v int 21h

mov osh_v,1 end_error_d:

ret ASCII_bin_d endp

bin_ASCII proc

;процедура перевода из bin в ASCII (Вход: rezult=число в bin;

выход: ascval= число в ASCII)

call clrascval

;вызов процедуры очистки строковой переменной ascval

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

98

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 jmp m1

bin_ASCII endp

clrascval proc mov cx,20 mov si,19

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

loop clr1 ret

clrascval endp

99

cursor proc ;процедура перевода курсора на след. строку mov ah,09

lea dx,perevod_cursora int 21h

ret cursor endp

codesg ends end mainproc

===========================================================

; l_2_2zal.asm ЗАБИЯКИН АЛЕКСЕЙ ( Лабораторная работа №2, модуль 2)

extrn b1:byte,b2:byte,b3:byte,w1:word,d1:dword,d2:dword

extrn rez1:dword,rez2:dword,rez3:dword,rez4:dword,rezult:qword,ascval:byte extrn bin_ASCII:proc

public formula2

csg_mod segment para 'code'

assume cs:csg_mod,ds:csg_mod,ss:csg_mod formula2 proc

;b1 and b2 xor (w1 xor b3) or (d1 or d2)

;b1 and b2 mov al,b1 and al,b2

mov byte ptr rez1,al

;w1 xor b3 xor ax,ax mov al,b3 cbw

xor ax,w1

mov word ptr rez2,ax

;d1 or d2 xor ax,ax xor bx,bx

mov ax,word ptr d1 mov bx,word ptr d1+2 xor ax,word ptr d2 xor bx,word ptr d2+2 mov word ptr rez3,ax

mov word ptr rez3+2,bx

;b1 and b2 xor (w1 xor b3) mov ax,word ptr rez1

xor ax,word ptr rez2

100

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