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