2013-11-08 1 views
0

Я пытаюсь выполнить десятичную настройку после добавления, создавая десятизначную цифру. Я вижу, что существует команда daa, но она регулирует только al, в то время как мне нужен весь ax, скорректированный с шестнадцатеричного на десятичный.Как десятичная корректировка 4-значное дополнение в сборке 8085

Для примера:

mov ax, 9876h 
mov bx, 5432h 
add ax, bx 

привело бы к ECA8 в ax регистре. Ответ после преобразования я хочу бы что-то вроде 5308 в ax регистре с переносом флагом с указанием одного перед 5 в полном ответе (15308)

DAA влияет только al вместо ax, есть некоторая другая команда сделать это или простой способ сделать такое? (Я также ищу идею для вычитания, так как DAS также влияет только на al)

+2

Я не запрограммирован в сборке 8085, но ваш код выглядит сборкой 8086 для меня, а не сборкой 8085. Так вы ориентируетесь на 8086 вместо 8085? – nrz

ответ

0

Поскольку исходный пример для 8086, я покажу ответ с этим набором команд. Тот же принцип применим к 8085. Не существует эквивалента инструкции daa, которая работает с двухбайтовым значением. Таким образом, вы должны разделить ваши операции:

mov al, 76h 
    add al, 32h 
    daa 
    mov bl, al 
    jnc skip 
    mov bh, 1 
skip: 
    mov al, 98h 
    add al, 54h 
    daa 
    add bh, al 

И CF будет установлен, если есть пятая цифра переносится.