2015-10-13 2 views
-2

Мой колледж дал мне упражнение:Деление на ассемблере x86

1. Создайте новый документ в Jasmin

2. Используйте AL-регистр, чтобы добавить 9 до 8.

3. Вычесть 2.

4. Разделить на 7.

Мое решение:

mov al,9 
add al,8 
sub al,2 

Но как я делю на 7? Я пробовал что-то вроде div al,7, но это не работает.

ответ

3

div Операция делит (без знака) значение в AX, DX: AX или EDX: регистры EAX (деление) на исходный операнд (делитель) и сохраняет результат в AX (AH: AL), DX: AX или EDX: EAX.

source

так, чтобы разделить значение аль, что вам нужно сделать:

mov ah, 0 # clean up ah, also you can do it before, like move ax, 9 
mov bl, 7 # prepare divisor 
div bl # al = ax/bl, ah = ax % bl 

после этого аль будет содержать фактор и ах будет содержать остаток

+0

Как 'div' знаю, должен ли он делить AX, DX: AX или EDX: EAX? – PeterPan

+0

@ S.Eberl в зависимости от аргумента, bl, bx, ebx -> ax, dx: ax, edx: eax –

+0

Итак, если я делю на bl, он автоматически делит топор? – PeterPan

2

Существует DIV инструкция which does division, но вам нужно будет поставить дивиденд в AX (или один из его братьев и сестер).

Смежные вопросы