汇编的几个问题,帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/24 11:02:38
1.将bx寄存器中的16位二进制数分为4组,每组4位分别压入堆栈进行保护。(这怎么弄啊,用push不是最少8位吗?)
2.改变标志寄存器中tf标志的状态(0—>1或1—>0),其余位保持不变。
(先说说怎么看tf标志位啊)

1.你可以先把16位的寄存器的内容分别与上000Fh,00F0h,0F00h,F000h得到4个四位,然后不足的位数不上0,放在一个8位的寄存器里,再压到堆栈里面去
2.首先你要知道标志寄存器里的内容是哪些,或者说tf标志位是第几位。
追踪标志TF(Trap Flag)
位于标志寄存器的第8个位。
当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。这种方式主要用于程序的调试。指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。
你可以直接把标志寄存器异或(XOR)100H就可以将1改变为0,将0改变为1了。
如果想看标志位,你在debug中,每次执行G命令,可以看到所有的标志位

上面大侠回答的十分正确啊

1. 用push不是最少8位吗?不是最少8位,是最少16位

16位分为4个4位组,通过移位与逻辑与指令取出其中的每一个4位组,代码如下:

    MOV CX, 4
    MOV DX,CX
NEXT:
    MOV AX,000FH
    AND AX,BX
    PUSH AX
    MOV CL,4
    SHR BX,CL
    MOV CX,DX
    LOOP NEXT

2. 圆球球UOB已经讲得比较清楚:指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。 
但要注意,你---不----可以直接把标志寄存器异或(X