Не могу разобраться. Assembler

Узнай цену своей работы

Формулировка задачи:

Всем привет) Кто-нибудь может посоветовать понятный и краткий курс по языку ассемблера? Не могу разобраться вот с чем:

1.

Нужно написать на ассемблере: В памяти располагается одно 4-байтовое число (константа). Нужно положить его нулевой (младший) байт в регистр eax, первый – в регистр ebx, второй – в ecx и последний – в edx.

2.

Может ли произойти переполнение (OF) и перенос (CF) при сложении положительного целого числа с отрицательным?

3.

Нужно разделить число со знаком в eax на число в ebx. При этом нужно, чтобы деление выполнялось корректно для любых чисел в eax и ebx (кроме деления на нуль). Есть команда idiv ebx, но оказалось, что результат не всегда верный. Какую ещё команду надо поставить перед ней?

4.

Если перед началом цикла LOOPW регистр CX равен 0. В теле цикла регистр CX явным образом не меняется. То сколько раз будет выполнено тело цикла? 0?

5.

Известно, что при использовании команды CMP получились флаги SF=0, OF=1, CF=1. Если операнды – числа со знаком, то можем ли мы точно сказать, что один из них меньше другого и который именно?

6.

Известно, что при использовании команды CMP получились флаги SF=1, OF=1, CF=0. Если операнды – числа со знаком, то можем ли мы точно сказать, что один из них меньше другого и который именно?

7.

Дан следующий код:
mov ax,-30
cmp ax, bx
ja Target
Найдите самое большое число без знака, которое может лежать в bx, чтобы переход на метку сработал.

8.

Пусть входное число находится в регистре eax. Дан следующий код:
mov ebx, eax
dec ebx
команда eax, ebx
Какую команду нужно поставить в последней строчке, чтобы в резуль-тате её работы устанавливался флаг zf, если в eax записана степень двойки? Кто-нибудь может объяснить? и дать ссылку где это можно почитать?

Решение задачи: «Не могу разобраться. Assembler»

textual
Листинг программы
1.......
           +
  0.......
           =

Оцени полезность:

11   голосов , оценка 3.909 из 5