我正在使用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
答案 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