ошибка массажа «прямой массаж нуждается в переопределении (24) [во входных данных] модуль« предупреждение »зависит от прохода - проход совместимости выполнен [строка 31 основного файла]» «мой код:
file: input
enter_char proc ;; the ouput from console is saved in al; destroys ax.
mov ah, 01h
int 21h
ret
enter_char endp
enter_notFullPos proc
mov bx, 0
mov cl, 0
num_enter:
call enter_char
cmp al, "."
jnz after_point
mov cl, 1
after_point:
sub al, "0"
jc end_input
cmp al, 10
jnc end_input
adding_number:
mult bx, 10
add bl, al
cmp cl, 0
jnz after_add
inc cl
after_add:jmp num_enter
end_input:
mov angel, bx
dec cl
mov pivot, cl
ret
enter_notFullPos endp
и в файле: "mathop.asm"
mult macro num1, num2 ; returns result in num1
push dx
push ax
push bx
mov ax, num1
mov bx, num2
mul bx
pop bx
mov num1, ax
pop ax
pop dx
endm
есть 3 проблемы: 1. ошибка 2. и программа падает. 3. программа не работает должным образом
программа без строки "call downLine" не закрывается ", но давайте сосредоточимся на основной проблеме, которая может быть связана с другими проблемами - на ошибке. Макрос mult должен поместить окончательное значение вычисления в num1, а не изменять какие-либо регистры. мой основной код не использует макрос. и я использую tasm, с / m
мой основной: (начинается со строки 13)
assume cs:cseg, ds: dseg
include print.asm
include input.asm
include mathop.asm
start:
mov ax, dseg
mov ds, ax
print massage1
call downLine
call enter_char
mov trigo_func, al
print massage2
call enter_notFullPos
mov bx, angel
push bx
;call print_num
int 3h
cseg ends
end start
введите описание изображения здесь