сборка 8086 - как включить флаг направления? - PullRequest
0 голосов
/ 25 ноября 2018

Я использую dosbox для программирования на 16-битном языке ассемблера.

mov df,1

Я знаю, что это не работает, но именно поэтому я задаю вопрос

Я хочу знать, можем ли мы изменитьего значение по желанию.

может быть, оно обычно присваивается как

mov flagreg,1000011010000110b

, если есть какие-либо ошибки в вопросе или что я говорю, не стесняйтесь исправлять меня!

РЕДАКТИРОВАНИЕ:

что я пытаюсь здесь сделать, это напечатать обратно строку

.data
st1 db '1111$0000'
.code

main proc
mov ax,@data
mov ds,ax

pushf
pop ax
or ax,0400h
push ax
popf

std
mov ah,9
mov dx,offset st1
int 21h

mov ah,4ch
int 21h
main endp

end main

Желаемый выход:

0000

Фактический выход:

1111

1 Ответ

0 голосов
/ 25 ноября 2018

Вы можете установить флаг направления с помощью инструкции std (установить флаг направления) и очистить его с помощью инструкции cld (сбросить флаг направления).

Флаг направления имеет бит 10 в флагахрегистр.Вы также можете управлять им, напрямую изменяя регистр флагов.Например, чтобы установить флаг направления, вы можете сделать:

pushf         ; push flags onto the stack
pop ax        ; pop flags into ax
or ax, 0400h  ; set direction flag
push ax       ; push ax
popf          ; pop into flags
...