bx命令btc
1. 汇编中的TEST指令各是什么
看过破解教程,都知道test,cmp是比较关键,可是我一直不清楚它们究竟是怎么比较的,最后下决心找了很多资料,和大家一起把它们弄清楚.
首先看看:状态寄存器(即标志寄存器)
PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,
如下所示:
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OF DF IF TF SF ZF AF PF CF
条件码:
①OF(Overflow Flag)溢出标志,溢出时为1,否则置0.标明一个溢出了的计算,如:结构和目标不匹配.
②SF(Sign Flag)符号标志,结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.注意:Carry标志中存放计算后最右的位.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。
有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志.结果操作数中1的个数为偶数时置1,否则置0.
控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志。
为举例方便说一下jnz和jz
测试条件
JZ ZF=1
JNZ ZF=0
即Jz=jump if zero (结果为0则设置ZF零标志为1,跳转)
Jnz=jump if not zero
好,接着来看test和cmp
*******************************************************************************
test属于逻辑运算指令
功能: 执行BIT与BIT之间的逻辑运算
测试(两操作数作与运算,仅修改标志位,不回送结果).
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会启羡握保存。TEST AX,BX 与 AND AX,BX 命令有相同效果
语法: TEST r/m,r/m/data
影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0)
运用举例:
1.Test用来测试一个位,例如寄存器:
test eax, 100b; b后缀意为二进制
jnz ******; 悄庆 如果eax右数第三个位为1,jnz将会跳转
我是这样想的,jnz跳转的条件是ZF=0,ZF=0意味着ZF(零标志)没被置位,即逻辑与结果为1.
2.Test的一个非常普遍的用法是用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere
如果ecx为零,设置ZF零标志为1,Jz跳转
*******************************************************************************
CMP属于算术运算指令
功能: 比较两个值(寄存器,内存,直接数值)
语法: CMP r/m,r/m/data
标志位: C,P,A,Z,O
CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
cmp实际上是只设置标志不保存结构的减法,并设置Z-flag(零标志).
零标志很像carry,也是内部标派运志寄存器的一位.
例如:
Cmp eax, 2; 如果eax-2=0即eax=2就设置零标志为1
Jz ****; 如果设置了零标志就跳转
*******************************************************************************
我得出的结论
test逻辑与运算结果为零,就把ZF(零标志)置1;
cmp 算术减法运算结果为零,就把ZF(零标志)置1
2. 汇编语言高手进,急用,在线等答案!请确保答案的正确性!
1.这个题目有问题。应该是JMP。
mov cx,0
L1 TEXT AX,0FFFFH
JE L3
JNS L2
INC CX
L2 SHL AX,1
JMP L1
L3.........
2.CMP DX,BX
JA L2
JB L1
CMP AX,CX
JA L2
3.(1).XOR AL,15H
(2).MOV BL,AL
NOT BL
TEST BL,00101010B
JZ L1
(3).PUSHF
POP AX
(4).MOV CX,50
CLD
LEA DI,[3000H]
MOV AL,0
REP STOSB
(5).MOV CX,4
REPEAT:SHL AX,1
RCL DX,1
LOOP REPEAT
(6).OR DX,DX
JNS NEXT
NOT DX
NOT AX
ADD AX,1
ADC DX,0
NEXT:......
3. X86指令集的内容有哪些
CPU扩展指令集CPU依靠指令来计算和控制系统,每款CPU在设计时就规定了一系列与其硬件电路相配合的指令系统。指令的强弱也是CPU的重要指标,指令集是提高微处理器效率的最有效工具之一。从现阶段的主流体系结构讲,指令集可分为复杂指令集和精简指令集两部分,而从具体运用看,如Intel的MMX(Multi Media Extended)、SSE、 SSE2(Streaming-Single instruction multiple data-Extensions 2)、SEE3和AMD的3DNow!等都是CPU的扩展指令集,分别增强了CPU的多媒体、图形图象和Internet等的处理能力。我们通常会把CPU的扩展指令集称为CPU的指令集。SSE3指令集也是目前规模最小的指令集,此前MMX包含有57条命令,SSE包含有50条命令,SSE2包含有144条命令,SSE3包含有13条命令。目前SSE3也是最先进的指令集,英特尔Prescott处理器已经支持SSE3指令集,AMD会在未来双核心处理器当中加入对SSE3指令集的支持,全美达的处理器也将支持这一指令集。
指令集:
(1) X86指令集要知道什么是指令集还要从当今的X86架构的CPU说起。X86指令集是Intel为其第一块16位CPU(i8086)专门开发的,IBM1981年推出的世界第一台PC机中的CPU—i8088(i8086简化版)使用的也是X86指令,同时电脑中为提高浮点数据处理能力而增加的X87芯片系列数学协处理器则另外使用X87指令,以后就将X86指令集和X87指令集统称为X86指令集。虽然随着CPU技术的不断发展,Intel陆续研制出更新型的i80386、i80486直到今天,但为了保证电脑能继续运行以往开发的各类应用程序以保护和继承丰富的软件资源,所以Intel公司所生产的所有CPU仍然继续使用X86指令集,所以它的CPU仍属于X86系列。由于Intel X86系列及其兼容CPU都使用X86指令集,所以就形成了今天庞大的X86系列及兼容CPU阵容。
(2) RISC指令集RISC指令集是以后高性能CPU的发展方向。它与传统的CISC(复杂指令集)相对。相比而言,RISC的指令格式统一,种类比较少,寻址方式也比复杂指令集少。当然处理速度就提高很多了。而且RISC指令集还兼容原来的X86指令集。
4. 求助!为什么X86以上的CPU指令集不提供给用户呢比如X86-64,sSSE3等等。
SSE AVX这些是扩展指令集,传统的x86那些是基本指令集,用那个叫CPUID的软件自己测测看自己机器支持哪些指令集。这些哪里不给你用啦?你都可以用,Intel手册里都有写,只是研究这些的人比较少罢了,一般都是做特殊优化,比如视频解码,游戏这些采用。
5. 导入bx文件后提示rangecheckerror
原因分析:图梁汪纸太大了。 方法1.将图纸炸开,在天正软件中,打开并选中图纸,命令栏中输入X炸开图纸,炸开图纸后,将图纸写块,选橡码仔中部分模竖图纸,在命
6. 以BX寄存器和SI寄存器为基址加变址寻址方式,加内存中的一个字送到AX寄存器中
MOV AX,[BX+SI]
物理地址=DS左移四位+[SI]+[BX]
7. xtest是什么指令sdata
逻辑运算。测试是软件衫猜开发过程中必不可少的步骤,test属于逻辑运算指令,其功能为功能执行BIT与BIT之间的逻辑运算和测试功能【两操作斗州数作与运算,仅修改标志位,不回送结果】,Test对两个参数【目标,源】执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存,ESTAX,BX与ANDAX,BX命令有相同效果,TEST语法规格:TESTr/m,r/m/data,空塌蔽其影响标志包括:C、O、P、Z、S【其中C与O两个标志会被设为0】。
8. 微机原理中如何用test指令判断数据正负
Test对两个参数(目标,源)执行AND逻辑操作,并根据结果设置标志寄存器,结果本身不会保存。毁颤TEST AX,BX 与 AND AX,BX 命令有相同效果
影响标志: C,O,P,Z,S(其中C与O两个标志会宴和被设为0)
该指令还可以用来测试一方寄存器是否为空:
test ecx, ecx
jz somewhere
如果ecx为零纤祥败,设置ZF零标志为1,Jz跳转