汇编语言检测点11.1求助!!!
这个检测点很难理解,望高人解惑!sub al,al zf=1(为0)pf=1(0为偶)sf=0(不是负数)
mov al,1同上不变,传送指令不影响flag寄存器
push ax同上
pop bx 同上
add al,bl /1+1=2zf=0pf=0sf=0 // 2转化为二进制为10,而补全二进制位为00000010,所以这里是0
add al,10/ 2+10=12 zf=0 pf=1 sf=0 //sf同上
mul al/12*12=144=10010000 zf=0 pf=1 sf=1(应该为1啊,为什么标准答案为0呢?????????????)
想了好久就是没想明白!!
是不是进位的问题?
看了后面的视频,是否是 al容纳的只能是-127到128,mul al,的结果144,al容纳不下,然后前面的1就到ah中去了?
还是说超过了AL能容纳的数据,这个数对AL来说只能是正数?
本帖最后由 困惑灵魂 于 2011-6-11 00:12 编辑
sf是符号位吧
CZSOPA
r??r??
Unsigned multiply. (注意这个!!无符号)
r - 标志值取决于指令的结果
? - 标志的值是不确定的(可能是1或0)。
CF=OF=0 when high section of the result is zero.
上面说明
mul 指令 只对 cfof有确定作用
sf 是不确定的
你应该明白滴-MUL就是无符号乘法
本帖最后由 困惑灵魂 于 2011-6-11 00:02 编辑
MUL
REGmemory
Unsigned multiply.
Algorithm:
when operand is a byte:
AX = AL * operand.
when operand is a word:
(DX AX) = AX * operand.
Example:
MOV AL, 200 ; AL = 0C8h
MOV BL, 4
MUL BL ; AX = 0320h (800)
RET
C Z S O P A
r ? ? r ? ?
CF=OF=0 when high section of the result is zero. 哦,这样啊!谢谢了!
页:
[1]