Материал: 775

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

mov ah,09

; вывод сообщения 'Введите B3= '

mov osh_v,0

 

lea dx,s_b3

 

int 21h

 

mov ah,0ah

; ввод с клавиатуры значения B3

lea dx,vvod_b

 

int 21h

 

call ASCII_bin_b ; преобразование из кода ASCii в двоичный код mov b3,al

mov prom,0 call cursor cmp osh_v,0

jz ii4

jmp povtor_b3

ii4:

 

mov field_b,0

;очистить поле

mov field_b+1,0

 

mov field_b+2,0

 

mov field_b+3,0

 

povtor_w1:

 

mov ah,09

; вывод сообщения 'Введите w1= '

mov osh_v,0

 

lea dx,s_w1

 

int 21h

 

mov ah,0ah

; ввод с клавиатуры значения w1

lea dx,vvod_w

 

int 21h

 

call ASCII_bin_w ; преобразование из кода ASCii в двоичный код mov word ptr w1,ax

mov prom,0 call cursor cmp osh_v,0

jz ii5

jmp povtor_w1

ii5:

 

mov field_w,0

;очистить поле

mov field_w+1,0

 

mov field_w+2,0

 

91

mov field_w+3,0 mov field_w+4,0 mov field_w+5,0 mov field_w+6,0

cmp x1,1

jz povtor_w2 cmp x1,2

jz ii6

povtor_w2:

 

mov ah,09

; вывод сообщения 'Введите w2= '

mov osh_v,0

 

lea dx,s_w2

 

int 21h

 

mov ah,0ah

; ввод с клавиатуры значения w2

lea dx,vvod_w

 

int 21h

 

call ASCII_bin_w ; преобразование из кода ASCii в двоичный код mov word ptr w2,ax

mov prom,0 call cursor cmp osh_v,0

jz ii6

jmp povtor_w2

ii6:

 

mov field_w,0

;очистить поле

mov field_w+1,0

 

mov field_w+2,0

 

mov field_w+3,0

 

mov field_w+4,0

 

mov field_w+5,0

 

mov field_w+6,0

 

povtor_d1:

 

mov ah,09

; вывод сообщения 'Введите d1= '

mov osh_v,0

 

lea dx,s_d1

 

int 21h

 

mov ah,0ah

; ввод с клавиатуры значения d1

lea dx,vvod_d

 

 

92

int 21h

call ASCII_bin_d ; преобразование из кода ASCii в двоичный код mov word ptr d1,ax

mov word ptr d1+2,dx mov word ptr promd,0 call cursor

cmp osh_v,0 jz ii7

jmp povtor_d1

ii7:

 

mov field_d,0

;очистить поле

mov field_d+1,0

 

mov field_d+2,0

 

mov field_d+3,0

 

mov field_d+4,0

 

mov field_d+5,0

 

mov field_d+6,0

 

mov field_d+7,0

 

mov field_d+8,0

 

cmp x1,2

 

jz povtor_d2

 

cmp x1,1

 

jz ii8

 

povtor_d2:

 

mov ah,09

;вывод сообщения 'Введите d2= '

mov osh_v,0

 

lea dx,s_d2

 

int 21h

 

mov ah,0ah

; ввод с клавиатуры значения d2

lea dx,vvod_d

 

int 21h

 

call ASCII_bin_d ; преобразование из кода ASCii в двоичный код mov word ptr d2,ax

mov word ptr d2+2,dx mov word ptr promd,0 call cursor

cmp osh_v,0 jz ii8

jmp povtor_d2

93

ii8:

 

mov field_d,0

;очистить поле

mov field_d+1,0

 

mov field_d+2,0

 

mov field_d+3,0

 

mov field_d+4,0

 

mov field_d+5,0

 

mov field_d+6,0

 

mov field_d+7,0

 

mov field_d+8,0

 

mov al,x1

 

cmp al,1

 

jz f1

 

cmp al,2

 

jz f2

 

f2:

 

call formula2

 

jmp fin

 

f1:

;1. Выполним умножение w1*w2

mov ax,w1

;\ w1*w2

mul w2

;/

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

;2. Выполним деление d1/b1

;xor ax,ax

;mov al,b1

;cbw

;mov bx,ax

;xor ax,ax

;mov ax,word ptr d1

;div bx

;mov word ptr rez2,ax xor ax,ax

xor dx,dx

;\

 

xor bx,bx

; \

mov ax,word ptr d1

;

|d1/b1

mov dx,word ptr d1+2

; |

mov bl,b1

; /

div bx

;/

 

mov word ptr rez2,ax mov word ptr rez2+2,dx

94

;3. Выполним вычитание b2-b3 xor ax,ax

mov al,b2 sub al,b3

mov byte ptr rez3,al

;4. Выполним сложение rez1+rez2 xor ax,ax

xor bx,bx

mov ax,word ptr rez1 mov bx,word ptr rez1+2 add ax,word ptr rez2 adc bx,word ptr rez2+2 mov word ptr rez4,ax mov word ptr rez4+2,bx

;5. Выполним вычитание rez3-rez4 sub ax,word ptr rez3

sbb bx,word ptr rez3+2

 

mov word ptr rezult,ax

 

mov word ptr rezult+2,bx

 

fin:

 

 

call bin_ASCII

 

mov ah,9

;\

 

lea dx,ascval

; вывод на экран результата

int 21h

;/

 

mov ah,02

;\

| установка курсора

mov bh,00

; \

| экран 0

mov dh,24

; управление курсором | строка 23

mov dl,00

; /

| столбец 00

int 10h

;/

| передача упр. в BIOS

mov ah,09

 

 

lea dx,soob_vixod

 

int 21h

 

 

mov ah,0

;–ожидание нажатия клавиши

int 16h

;/

 

ret

mainproc endp

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

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

95

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