当前位置:编程学习 > 汇编语言 >>

执行下列指令后AX寄存器的内容是什么? 汇编语言的。谁帮忙指导一下。

执行下列指令后AX寄存器的内容是什么? MOV AX,3388H TEST AX,0F0FH JZ LAB1 MOV DX,0088H JMP LAB2 LAB1:MOV DX,3300H LAB2:AX,DX
答案:Lab2 后面语句没有指令只有操作数啊
假设 代码如下的话
MOV ax,3388H
TEST AX,0F0FH
JZ  lab1
MOV DX,0088H
JMP  lab2
lab1:
    MOV DX,3300H
lab2:
    mov AX,DX
结果为 0088h
------------============分析如下=============---------------
一开始
mov ax, 3388h        ;此时ax 的值为  3388h
test ax, 0f0fh          ;此时ax 的值为  3388h, test 测试不相等flags没有变化
jz lab1                   ;此时zf标志位0,不发生跳转继续执行
mov dx, 0088h         ;此时 dx的值为0088h, ax的值为3388h
jmp  lab2                ;无条件跳转到lab2处继续执行
lab2:  mov  ax, dx    ; 此时ax的值为0088h.
其他:0088H 写出各语句的注释,以帮助你理解。
;AX=3388H
;AX逻辑与0F0FH,结果为0308H,不存入AX,只影响标志位
;当结果为0时,跳转至lab1。因为0308不等于0,顺序执行
;DX=0088H
;无条件跳转至LAB2
;LAB1:DX=3300H
;这条语句不对吧,是不是应该是 MOV  AX,DX。结果是将DX的内容赋值给AX。当前程序就应该跳转至这里。
所以,整个程序段执行结束后结果为 AX=0088H 

上一个:解决汇编语言程序
下一个:再用keil软件编译汇编语言时为什么总出现 file has been changed outside the eit

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,