关于汇编语言的一个问题

NEG指令对CF/OF的影响:
操作数为0 CF=0 否则CF=1
why?
详细解释一下

NEG指令求出目的操作数的负数。如果原来的操作数为正数,在执行NEG指令之后,变成负数。反之,原来的操作数为负数,则执行NEG指令后就变成正数。

但有一特例,以单字节数为例:如果原来的操作数为80H,执行NEG指令后,仍为80H,但此时溢出标志OF为1.另外,只有当操作数为0时,在执行NEG指令后,CF标志才为0,对于其他数,执行NEG指令后,CF标志总为1。

《微型计算机原理与汇编语言程序设计》 p92
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-01-18
求补操作即是把操作数按位求反后末位加1,即FFFFH-OPR+1=0-OPR。也就是说,对一个操作数求补,相当于用0减去此操作数。参加求补运算的操作数当然是有符号数。对于CF而言,只有对0求补时,CF=0,其余情况都使CF=1(有借位)。0减去负数应该是正数,但当操作数的值是80H(-128)或8000H(-32768)时,求补后其值保持不变,仍为负数,固产生溢出,OF=1。其余情况都使OF=0。

参考资料:http://www.pdfbbs.com/masm/display.asp?id=59

本回答被提问者采纳
第2个回答  2009-01-18
呃。。。不会

关于汇编语言和高级语言的问题
汇编语言是为解决机器指令难以记忆的问题而发明的。通过助记符代替机器语言指令,汇编语言与机器语言一一对应,CPU有多少条机器指令就有多少条汇编指令。然而,汇编语言仍需学习其内部结构,对复杂结构理解有难度。为解决这一问题,高级语言应运而生。程序员使用高级语言编写程序后,通过编译器转换为汇编语言...

汇编中关于有符号和无符号问题
问题一:关于汇编语言中的符号标志位(SF),它确实是对应字符代码的第七位。对于十六进制表示的范围 00H 到 7FH,符号标志位为0,表示这些数值为正。而对于 80H 到 FFH 的范围,符号标志位为1,表示这些数值为负。问题二:在汇编指令 `mov al, 0FCh` 之后紧接着 `add al, 05h`,无论操作...

关于汇编语言的一个问题
NEG指令求出目的操作数的负数。如果原来的操作数为正数,在执行NEG指令之后,变成负数。反之,原来的操作数为负数,则执行NEG指令后就变成正数。但有一特例,以单字节数为例:如果原来的操作数为80H,执行NEG指令后,仍为80H,但此时溢出标志OF为1.另外,只有当操作数为0时,在执行NEG指令后,CF标志才...

汇编语言问题
1、不明白题目的意思 2、填充64K区域,32*1024就是32K,STOSW执行两字节填充,所以32K*2=64K 3、立即数可以用十进制表示,+35和+35h都是合法的,只不过+35=+23h。你说的哪几种写法都是可以的,但不确定是否任何编译器都能过。

高分!!汇编语言的若干问题
1、汇编语言是编译型还是解释型?(或许汇编语言不能这么表述)编译型 2、汇编语言是否像高级语言一样,即便是相同的硬件也有很多种汇编语言?一般只有一种 3、汇编语言编写的程序在不同硬件上未必通用,这是因为硬件(如cpu)机器码与功能不同,那么是否像java一样,用一种汇编语言写一次汇编源码,在...

关于汇编call指令的一个问题
第一个问题。10h,记得后面有h。意思是16进制。10h=16。堆栈是自下而上的。所以把IP压入后是10H-2=0Eh 。第二个问题。call的意思是把当前CS:IP压入SS:SP指向的栈中。然后跳到DS:[adress]所存放的地址处。王爽书里面的压栈的确是反着来的。他有详细的讲是如何压的,你可以认真翻翻,这不...

汇编语言指令的一些小问题
两位数,可以理解成,高位、低位。两个“两位数”相加,先加低位,再加高位(还要考虑低位的进位)。--- 16 位的计算机,每次,所能处理的一个数,只是两个字节。表示较大的数,就得用两部分,高位、低位,各两个字节。书上说的四个字节,就是一个较大的数字。两个“四字节数”相加时,要先...

几个关于汇编语言的问题 急用 谢谢
MOV AH,4CH INT 21H 3.简介JMP\/JC,CMP\/PEST用法。计算机汇编语言中的一种跳转指令.当需要分支程序时,散转程序有时可以帮我们实现。使用指令JMP @A+DPTR,可实现多分支转移。它是根据某种输入或运算的结果,分别转向各个处理程序段取执行程序。JMP 就是跳转到当前的地址, 所以它是一个死循环,不...

汇编语言的问题
第1个,选4 。两个操作数的类型不符。al只能存放字节,而100H超出字节范围。第2个,选4 。16位结构的cpu通常指CPU内部通用寄存器的位宽。第3个,选2 。(al)=6aH,(bl)=b8H,(al)=(al)+(bl)=6aH+b8H=22H,又因为(ah)=93H,所以(ax)=9322H 第4个,选4 。原因与第1个...

汇编语言一个小问题
mov ax,[0010h]的意思是将 [0010h] 中的内容装入到 ax 中,0010h 在这里是一个地址,也就是count 这个变量的地址。 你可以理解为 count 是 0010号房间。 mov ax,count 是 “将 0010h”号房间的客人请入到 ax 中“的意思, 而 0010h 号房间住着客人是 0020h ,不可以理解成”将 0020...

相似回答
大家正在搜