Консультация № 161680
01.03.2009, 12:08
0.00 руб.
0 6 2
Пооомааагиите!!!!
Нужно написать программу записывающую содержимое аккумулятора в обратном порядке.(11101 -> 10111)
Обязательно через операнды слвига RRC или RLC.
никак не соображу.
Заранее огромнейшее спасибо)

Обсуждение

давно
Посетитель
7438
7205
02.03.2009, 12:22
общий
это ответ
Здравствуйте, Andrianov!
Например, для al, так:
Код:
mov ah, al
mov cx, 8
SLoop:
rcr ah, 1
rcl al, 1
loop SLoop

Для ассемблера MCS51:
Код:
mov r3, #8
SLoop:
rrc a
xch a, r2
rlc a
xch a, r2
djnz r3, SLoop
mov a, r2
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
03.03.2009, 23:03
общий
Сорри, допустил ошибку в коде (вместо rcr и rcl было rrc и rlc).
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Посетитель
7438
7205
04.03.2009, 09:50
общий
А может Вам надо было для MCS51 ?
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Старший Модератор
31795
6196
04.03.2009, 11:22
общий
это ответ
Здравствуйте, Andrianov!

Вариант с рекурсией под х86 процессор.
Вопросы задавйте в мини-форум.
Удачи!

Приложение:
;компилятор тасм
model tiny
.code
.186
org 100h
begin:
mov ax,011010010b
;выводим исходные данные
push ax
call outNum
;переводим строку
mov al,13
int 29h
mov al,10
int 29h
pop ax
;обмениваем
call Change
;выводим результат
call outNum
;выход
xor ax,ax
int 16h
ret
;вывод в двоичной системе
outNum: mov cx,16
outNumA:
shl ax,1
push ax
mov al,30h
adc al,0
int 29h
pop ax
loop outNumA
ret
;Рекурсивная процедура обмена
;сдвигаем и запоминаем в стеке
Change: rcr ax,1
pushf
;продолжаем пока не 0
or ax,ax
jz noChange
;вызываем саму себя
call Change
noChange:
;востанавливаем из стека и заполняем аккумулятор
popf
rcr ax,1
ret
end begin
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
04.03.2009, 20:11
общий
если честно, то да)
я скосячил, надо было сразу написать(
а то я в предыдущих нифига не понял
давно
Посетитель
7438
7205
05.03.2009, 00:19
общий
Надо было...Добавил в ответе решение для MCS51
Удачи!
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа