首先我们来学习test指令。
test指令在每对操作数的对应数据位之间进行隐含的“与”操作,并设置标志位,但不修改目的操作数。这点和cmp指令有点相似。 test指令与and指令的操作数格式相同。
格式:
test 寄存器,寄存器
test 寄存器,内存单元
test 寄存器,立即数
test 内存单元,寄存器
test 内存单元,立即数
test指令我们并不常用,一般用来检测相关的数值位。 例如我们判断一个字符是大写还是小写。因为我们内存中字符是以ascii码的形式存放的,所以显示的时候也是以ascii码的规则解码并显示。 那么我们举例
A的ascii码是41h。
a的ascii码是61h。
我们如何判断一个字母是大写还是小写。因为我们通过判断它是否大于40h 小于61h就可以知道它是大写了。 小写的我们判断是否大于61h 小于 7ah。
但是我们还有一种方式判断,那就是检测相应的二进制位。 我们可以自己将 41h和61h转换成相应的二进制位。
41h = 01000001B
61h = 01100001B
可以看到它们除了第5位不同,其余位都是相同的。 其余的大小写字母同样是,不信大家可以自己去试试。
那么我们只要检测到第五位到底是否为1就知道它是否是小写了。(如果是大写,第五位为0) 我们看下面的代码,因为是一个字节,我就用低8位寄存器al来标示。看代码
mov al, 'a'
test al, 00100000B
jnz msg
msg:
invoke MessageBox, NULL, '是小写', '提示', MB_OK ;大家知道是弹出消息框的意思就行了
由于我们对它做的是与运算,因为我们只有第5位为1,其余位都为0。所以如果第5位是0的话,则结果还是0,如果是1的话,则结果不为0.(与运算是两个都为1,则结果为1)
jnz依据的是标志位,如果zf = 0,则跳。 因为zf = 0,则标示结果不为0,说明是小写。 所以跳转到标号执行消息框,"是小写"。
好接下来我给大家看下相关指令依据的标志位。
检测标志位
je 等于转移 zf = 1
jne 不等于转移 zf = 0
jb 低于转移 cf = 1
jnb 不低于转移 cf = 0
ja 高于转移 cf = 0 且 zf = 0
jna 不高于则转移 cf = 1 或 zf = 1
很简单。
小作业:
1.那么今天我们主要是来深入理解下test指令以及用法,今天的作业是写一个检测字母是否是大写的例子,参考我上面的例子。
F 46h 0100 0110h
f 66h 0110 0110h
mov al 'F'
test al 0010 000h
je msg
msg:
invoke MesssgeBox, Null, "是大写","提示",MB_OK
分享到:
相关推荐
NOT、TEST指令 移位指令 基本移位指令SHL、SAL、SHR、SAR 循环移位指令ROL、ROR、RCL、RCR 程序 流程 控制 指令 转移指令 无条件转移指令JMP 条件转移指令Jcc 循环控制指令 LOOP、...
test 指令 test 指令
X86指令TEST TEST OPRD1,OPRD2 ;按位与操作,但不保存结果,仅影响标志寄存器,根据影响的标志位得到结果
PLC_TEST三菱PLC
1. Compact IF、IF指令的使用区别 2. FOR、WHILE、TEST指令的使用 3. GOTO、LABEL指令的使用方法 4. STOP、ProcCall、RETURN指令的使用
11-7 TEST指令 11-8 改变位位置 11-9 左移及右移 11-10 算术左移及算术右移 11-11 循环位移 11-12 位移及循环位移指令总结 11-13 综合例题 课后习题 第12章 文件处理 12-1 输入及输出层次 12-2 输入及输出概念 12-3 ...
STM32+通信模组的通用AT指令框架,简单修改即可移植。
AT_Test_stm32at_AT指令框架_stm32at_at_AT指令框架.zip
AT_Test_stm32at_AT指令框架_stm32at_at_AT指令框架_源码.zip
若是使用 mojito test 指令,则由它得到的实力能够在 mojito 单元测试中运行。使用步骤:需要 mojito-markup-test.增加一个 mojit spec.呈现视图和验证标记.完整示例:YUI.add('CompositeMojit_view-tests', ...
与CANTest ,USBCAN-II兼容 可以批量发送can指令,可以自定义指令文件导入发送
移动端自动化测试常用ADB指令、am应用交互、input模拟键盘操作或输入、monkey介绍
3.2.5 TEST指令. . . . . . . . . . . . . . . . . . . . . . . . . 45 3.2.6 位操作的应用. . . . . . . . . . . . . . . . . . . . . . . 45 3.3 避免使用条件分支. . . . . . . . . . . . . . . . . . . . . . . ...
AT指令调试精灵 1.0 方便AT指令调试
好不容易找了一篇稍全面又简洁的指令集介绍 add,mov(bwl),test,sub,shr,cmp,lea,je,jne,ja,jb 列出来帮助搜索
基于ADS1.2开发环境,ARM汇编指令整套测试通过的代码
用verilog HDL在vivado上编写的MIPS指令集的cpu,可以在N4板上下板运行,具体指令再实验报告和test文件夹中有 cputest文件夹是测试指令,在前仿真cpu时可以读取这些txt文件中的指令到内存中去,将结果输出到指定文件...
第三章 8086/8088的寻址方式和指令系统 练习题 一.单项选择题 1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为( )。 A.5000H B.5008H C.23008H D.32008H 2.设DS=1000H,ES=2000H,BX=...
华中科技大学计算机组成原理,头歌实践平台上的24条指令MIPS单周期CPU实验包
文中介绍了汇编指令add, sub, mul, div, inc, dec, cmp, and, or, xor, not, shl, shr, rol, ror, jmp, call, ret, push, pop, mov, lea, nop, xchg, test, fld, fst, fadd, fsub, fmul, fdiv, fist, fistp, fxch, ...