Вопрос № 19428: Здравствуйте!
Помогите, пожалуйста, составить программу для вычисления величин z:
z=3x+y при x>=10
z=5x-y при x<10
Число х поступает на порт Р1, число у - через порт Р2; число z должно храниться в ячейке ОЗУ 30h. Считать, что x,...
Вопрос № 19428
Здравствуйте!
Помогите, пожалуйста, составить программу для вычисления величин z:
z=3x+y при x>=10
z=5x-y при x<10
Число х поступает на порт Р1, число у - через порт Р2; число z должно храниться в ячейке ОЗУ 30h. Считать, что x, y, z, а также результаты промежуточных и окончательных вычислений - это целые числа, находящиеся в пределах 127...+127.
Отправлен: 09.04.2005, 15:56
Вопрос задал: mario (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Евгений Иванов
Здравствуйте, mario!
mov eax, [x]
lea ecx, [eax*2]
cmp eax, 10
jc @@m10
add eax,ecx
add eax,[y]
jmp @@m50
@m10:
shl ecx,1
add eax,ecx
sub eax,[y]
@m50:
mov [z],eax
всего хорошего!
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 10.04.2005, 00:12
Отвечает: Стас
Здравствуйте, mario!
in al,p1 ;x
mov ah,al ;x
mov cl,al ;x
add cl,cl ;2x
in al,p2 ;y
cmp ah,10 ;x>10?
jb less ; если меньше то jmp less
add ah,cl ;x+2x=3x
add ah,al ;3x+y
jmp result
less:
add cl,cl ;2x+2x=4x
add ah,cl ;x+4x=5x
sub ah,al ;5x-y
result:
mov ds:[30h],ah ; z=...
Ответ отправил: Стас (статус: Практикант)
Отправлен: 10.04.2005, 00:49
Отвечает: DSota
Здравствуйте, mario!
Я думаю, там все-таки быо -127...+127, в противном случае программа бедет иметь вид "mov byte ptr[30h],3*127+127", тем более результат при этом будет 508, что противоречит условию - что все результаты окончательных вычислений равны 127...
in al,p1;x
mov ah,al;x-x
shl ah,1;2x-x
add al,ah;2x-3x
mov byte ptr[30h],al;z=3x
in al,p2;y
cmp ah,20
jge @@l0;сравнение знаковое - т.к. -127...127
neg al;-y
add al,ah;2x-y
@@l0:
add byte ptr[30h],al;z
Ответ отправил: DSota (статус: Студент)
Отправлен: 11.04.2005, 11:07