程序集 8086 - 如何打开方向标志?
assembly 8086 - how can i turn on the direction flag?
我正在使用 dosbox 以 16 位汇编语言编程..
mov df,1
我知道这行不通,但这就是我问这个问题的原因
我想知道我们是否可以随心所欲地改变它的价值。
可能像
一样一般分配
mov flagreg,1000011010000110b
如果问题或我说的有任何错误,请随时纠正我!
已编辑:
我想在这里做的是反向打印一个字符串
.data
st1 db '1111[=12=]00'
.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
可以用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
我正在使用 dosbox 以 16 位汇编语言编程..
mov df,1
我知道这行不通,但这就是我问这个问题的原因
我想知道我们是否可以随心所欲地改变它的价值。
可能像
一样一般分配mov flagreg,1000011010000110b
如果问题或我说的有任何错误,请随时纠正我!
已编辑:
我想在这里做的是反向打印一个字符串
.data st1 db '1111[=12=]00' .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
可以用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