汇编语言IN AL 82H TEST AL 01H啥意思

作者&投稿:高蝶 (若有异议请与网页底部的电邮联系)
汇编 TEST AL,80H~

转自{HWFMOON}
为举例方便说一下jnz和jz
测试条件
JZ ZF=1
JNZ ZF=0
即Jz=jump if zero (结果为0则设置ZF零标志为1,跳转)
Jnz=jump if not zero


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跳转

TEST指令会根据操作数运算的结果设置CF,OF,AF,SF,ZF,PF标志。
其中,不论操作数是多少,CF和OF都置为0,AF无定义。其它各个标志由结果确定。

你的第一个问题,因为AL为0,所以SF=0, ZF=1, PF=1
你的第一个问题,因为AL为1,所以SF=0, ZF=0, PF=0

  
  IN AL 82H TEST AL 01H
  IN 是输入指令,21h、82H 是端口地址;
  AL是8位寄存器,作为目的操作数;
  TEST指令是将源操作数与目的操作数作按位与运算,但不改变目的操作数,也即按位与结果只影响标志位,目的操作数不变。

In al 82H //读取82H端口设备状态
test al 01h //测试其第0为是否为1,下面紧跟着应该是条件判断语句


北碚区15798377007: 汇编语言IN AL 82H TEST AL 01H啥意思 -
逮店盐酸: IN AL 82H TEST AL 01H IN 是输入指令,21h、82H 是端口地址; AL是8位寄存器,作为目的操作数; TEST指令是将源操作数与目的操作数作按位与运算,但不改变目的操作数,也即按位与结果只影响标志位,目的操作数不变.

北碚区15798377007: 下面程序段的功能是将从82H端口读入的值乘以10(汇编),不理解? -
逮店盐酸: IN AL,82H ;读取端口号82的信息 XOR AH,AH ;AH清零 ADD AX,AX ;先AX+AX,也就是乘2 MOV BX,AX ;然后MOV到BX MOV CX,2SHL BX,CL ;左移2位,加上之前的也就是乘8了. ADD AX,BX ;然后在加上乘2的,也就是乘10了.比如读取的是1,要乘10 = 10,先1 * 2 = 2;然后 2 * 4 = 8;然后8 + 2 = 10;明白?

北碚区15798377007: 阅读下列程序段,回答问题 -
逮店盐酸: 汇编语言,每句解释:IN AL,82H //将82H地址端口的数据输入到AL寄存器;XOR AH,AH //异或运算,将AH寄存器清零; ADD AX,AX //将AX寄存器自加,结果继续放入AX寄存器 MOV BX,AX //将上步结果,即AL寄存器的值放入BX寄存器 MOV ...

北碚区15798377007: 汇编中IN指令是什么意思 -
逮店盐酸: OUT 和 IN 在汇编中是端口读写操作指令.端口是主机与外设进行数据交换使用的,分为数据端口,状态端口和控制端口三种 例如: IN AL, 21H 表示从21H端口读一个字节数据到AL;

北碚区15798377007: 16/32位汇编语言中" in al ,dx"啥意思 -
逮店盐酸: IN AL,DX:DX是源操作数. AL是8位寄存器,作为目的操作数,IN指令是端口操作指令. 作用:将源操作数代表的端口的内容送给目的操作数,所以整条指令是将端口的内容送给AL寄存器.

北碚区15798377007: 汇编语言问题
逮店盐酸: (1)IN AL, 80H (2)MOV DX, 8OH IN AL, DX (3)MOV, AL, lOOH OUT 40H, AL 4)MOV AL, 10OH MOV DX,4OH OUT DX, AL

北碚区15798377007: 单片机,汇编语言(2)
逮店盐酸: 8255的端口地址为 80H, 82H, 84H, 86H 8253的端口地址为 90H, 92H, 94H, 96H 8259的端口地址为 A0H, A2H, 8251的端口地址为 B0H, B2H, OUT 80H, AL IN AL, 82H

北碚区15798377007: 输入指令IN输出指令OUT -
逮店盐酸: 输入指令IN输出指令OUT都是累加器专用指令.用法:IN AX/AL,I/O端口地百址;表示从外部度设备输入数据给累加器,如果从外设端口中输入一个字节则给8位累加器AL,若输入一个字则给16位累加器AX.如 IN AL,80H OUT I/O端口地址,AX/...

北碚区15798377007: 汇编语言:IN AL,DX -
逮店盐酸: 意思是从 dx 的端口中输入一个8位的值放在al中同样的还有 in ax,dx 这样的

北碚区15798377007: 一下汇编语言代码中,为什么AL的偏移地址是0008啊?请解释这四行代码的意思,我完全看不懂 -
逮店盐酸: dw 是字,就是16位,2字节,DW 2DUP(3),就是两个字重复3次,就变成6字节,再加上后面的01H(1字节),02H(1字节),就是6+1+1=8,因为偏移地址从0开始,就是0-7是以上内容,于是AI这个就从08H地址开始了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网