组件8086-如何打开方向标志?

时间:2018-11-25 12:38:04

标签: assembly flags dosbox

我正在使用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 :(得分:3)

您可以使用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