Вопрос № 72117: Здравствуйте. Ответьте ожалуйста вот на такой вопрос.
Предположим что регистр DX содержит 1011100110111001, а регистр CL - 03. Определить содержимое регистра DX после следующих команд.
1. SHR DX,1
2. SHR DX,CL
3. SHL DX,CL
4....
Вопрос № 72.117
Здравствуйте. Ответьте ожалуйста вот на такой вопрос.
Предположим что регистр DX содержит 1011100110111001, а регистр CL - 03. Определить содержимое регистра DX после следующих команд.
1. SHR DX,1
2. SHR DX,CL
3. SHL DX,CL
4. SHL DL,1
5. ROR DX,CL
6. ROR DL,CL
7. SAL DH,1
И ещё такие вопросы
1)Используя команды сдвига, пересылки и сложения, умножить содержимое регистра AX на 10
2) Напишите программу, которая умножает содержимое пары регистров DX:AX на 2. Измениет программу для: 1. Умножения на 4, 2. Деления на 4, 3. умножение 48 бит в регистрах DX:AX:BX на 2.
AX можно умножить на 10, если умножить сначала на 8, потом прибавить два оригинала.
shl ax, 1
rcl dx, 1
и т.д.
удачи!
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 22.01.2007, 17:30
Отвечает: Стас
Здравствуйте, Александр Логвиненко!
Вообще-то неплохо было бы самому решить задачки...
DX=16D2 (кстати SHR и SAL одна и таже команда)
1) для уножение на 10 умножаем исходноечисло на 2 запоминаем, умножаем исходноечисло на 8, складываем с запомненым (x*10=x*8+x*2), *2 смотри ниже:
SHL AX,1 ; AX*2
MOV BX,AX ;запомним
SHL AX,1 ;(AX уже умножено на 2) умножим еще на 2
SHL AX,1 ;(AX уже умножено на 4) умножим еще на 2 = AX*8
ADD AX,BX ;AX*10 = (BX=(AX*2)) + AX*8
2) для умножение на 2 нужно сдвинуть регистр влево на 1 бит например командой SHR, старший бит уйдет в CF, чтобы его не потерять сдвинем второй регистр командой RCL:
SHL AX,1; RCL DX,1 = DX:AX*2
соответсвенно два раза:SHL AX,1; RCL DX,1; SHL AX,1; RCL DX,1 = DX:AX*4
Деление - сдвиг вправо: SHR DX,1; RCR AX,1 = DX:AX/2
Ну и отсюда следует:
SHL BX,1; RCL AX,1; RCL DX,1 = DX:AX:BX*2
Ответ отправил: Стас (статус: Специалист)
Ответ отправлен: 23.01.2007, 03:38
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Александр Логвиненко!