Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вычислить произведение 16-ти разрядного целого числа и 8-ми разрядного целого числа с учетом их знаков. МК Atmel AT89C51

Влад Гришин Ученик (158), закрыт 11 лет назад
Дополнен 11 лет назад
MOV RO,#80
MOV R1,#80
MOV R7,#01
MOV A,#3A
MOV B,#05
RL A
DJNZ R7,0000
MOV R2,A
MOV A,R1
MOV B,R2
MUL AB
MOV R3,B
MOV R4,A
MOV A,R0
MOV B,R2
MUL AB
MOV R5,B
MOV R6,A
MOV A,R3
ADD A,R6
MOV R3,A
MOV A,R5
ADDC A,#00
MOV P0,R5
MOV P1,R3
MOV 00,R4

В этой программе умножаются без учёта знаков.
Дополнен 11 лет назад
помогите дополнить программу, чтобы производился учёт знаков
Лучший ответ
Миоко Таканава Гений (51590) 11 лет назад
;Умножение 16-разрядного числа со знаком
;в регистрах R1:R0 на восьмиразрядное число
;со знаком в регистре R2.
;Результат - 24-разрядое число со знаком
;в регистрах R5:R4:R3
;Пример вычисления: -3214 * -56 = 179984
Start:
    MOV R1,#F3h; Старший байт -3214
    MOV R0,#72h; Младший байт -3214
    MOV R2,#C8H; -56

    CLR A
    MOV R5,A
    MOV A,R0
    MOV B,R2
    MUL AB
    MOV R3,A
    MOV R4,B
    MOV A,R1
    MOV B,R2
    MUL AB
    ADD A,R4
    MOV R4,A
    MOV A,R5
    ADDC A,B
    MOV R5,A
    MOV A,R1
    MOV C,ACC.7
    CPL C
    JC NoM16
    MOV A,R5
    SUBB A,R2
    MOV R5,A
NoM16:
    MOV A,R2
    MOV C,ACC.7
    CPL C
    JC NoM8
    MOV A,R4
    SUBB A,R0
    MOV R4,A
    MOV A,R5
    SUBB A,R1
    MOV R5,A
NoM8:
;В регистрах R5:R4:R3 произведение 02BF10h = 179984
Stop:
    LJMP Stop
Остальные ответы
Похожие вопросы