汇编,。。题?有个不懂?

编程检测80H端口输入的字节数据,若为正,将BL清0;若为负,将BL置为FFH。请写出完整的汇编源程序。

CODE SEGMENT
ASSUME CS:CODE
START:IN AL,80H
TEST AL,80H
JZ APOS
MOV BL,0FFH
JMP EXIT
APOS:MOV BL,00H
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
【请问为什么这个
IN AL,80H
TEST AL,80H
JZ APOS
就可以判断80H端口输入的字节数据为正了呢?】
我查了
测试指令 TEST
格式: TEST OPRD1,OPRD2
功能: 其中OPRD1、OPRD2的含义同AND指令一样,也是对两个操作数进行按位的'与'运算,唯一不同之处是

不将'与'的结果送目的操作数,即本指令对两个操作数 的内容均不进行修改,仅是在逻辑与操作后,对标

志位重新置位.
可是这里的
TEST AL,80H
是和AL和80H 这个数比较呢 还是和80H这个端口的数据比较呢?
比较完都是0了就跳转是不是?
为什么都是0了它就为正呢?
还是不懂啊。。T_T

第1个回答  2023-03-29

检测AL寄存器最高位是否为1。

执行这条指令时,将AL中的值与立即数80H(10000000B)执行按位与运算。运算结果反映在标志寄存器上:ZF反映结果是否为零;SF反映AL的最高位是否为0

注意两点:

    指令中的立即数80H(10000000B)通常称为掩码。用掩码规定要检测的位;

    执行Test指令不会改变AL中的值

第2个回答  2008-01-17
自己查书看看test指令是什么意思。本回答被提问者采纳

汇编,。。题?有个不懂?
检测AL寄存器最高位是否为1。执行这条指令时,将AL中的值与立即数80H(10000000B)执行按位与运算。运算结果反映在标志寄存器上:ZF反映结果是否为零;SF反映AL的最高位是否为0 注意两点:指令中的立即数80H(10000000B)通常称为掩码。用掩码规定要检测的位;执行Test指令不会改变AL中的值 ...

一道汇编程序题中有地方不懂
1.-2的作用是因为DB 0DH,0AH这句,这个程序是根据回车换行来判断一个字符串的结束的,所以每次都把字符的个数存入BX,然后-2去掉最后一个换行.2.AX存放了N的值,也就是从BUFF开始到$总共占用的内存字节数.SUB AX,2被调用了,当程序检测到回车换行的时候就会调用这里.AX这里似乎没什么用.3.这段程...

汇编,题。。不懂?
M\/(\/IO):低电平表示访问I\/O接口,高电平访问存储器 \/RD:低电平有效,表示CPU从存储器读数据 \/WR:低电平有效,表示CPU向存储器写数据 MOV AX,[BX]是把存储单元的值读入CPU的寄存器 所以是访问存储器,CPU读数据 M\/(\/IO):1 \/RD:0 \/WR:1 ...

一道汇编程序题中有地方不懂
对DL赋值为6,但是从来没有用过。要是想用dl与bl相加,把bx放到si中的话——之前bx又没有进行初始化。而且每判断一个字符以后,dl应该减1啊,也没有减。也许是题目太高深了,不是我所能理解的吧^_^ 不好意思,没能帮上忙。

汇编语言有个地方不懂,会汇编的高手,给我讲讲吧,谢谢哈
我的猜想:P1接了地址线,且接反了【p1.7接的低位,P1.5接的高位】,通过该程序,转换为一个0-7之间的地址,至于下一步,你得再分析 【或者,P1.7--P1.5的接法,就是一种命令,不同的接法,对应不同的任务】

刚学汇编,很多不懂,麻烦各位前辈了。恩,所有疑问全部一起问出来了 设...
当偏移地址取其最大值时,段地址,就能达到最小值。该最小值,暂时写成:SA = minnH。在后边添个零,代入公式,如下:20000H = minn0H + 偏移地址最大值 横扫一眼,即可看出:等式左边,20000H,其最低位是 0。等式右边,其最低位,也必须是 0。所以,偏移地址的最大值,只能是 FFF0H。...

初学汇编,有问题不懂,求高人指点
CS:IP由程序加载器初始化,其他寄存器由程序本身初始化!assume系伪指令,是编译器在编译程序时使用的!

汇编中遇到的程序题看不懂
主要的就是这个子程序了 PROADD PROC NEAR PUSH AX ;PUSH CX ;压栈这些数据 PUSH SI ;即保存 目的怕数据被修改因为 ;下 面 可 能用到 LEA SI,ARY ;将ary的偏移地址放到si中,使si指向ary MOV CX,COUNT ;cx 中放的是循环的次数 XOR AX,AX ;很常用的寄存器清零...

汇编语言怎么学习啊?感觉一点都不懂啊?
可能写书的人觉得有人会告诉你这些。我刚开始学语言的时候,也是如此,学校里没人教基本语法,如何编译。记得我当时,连编程都需要哪些工具都不清楚,好容易知道了用tc2.0,但又不明白为什么我用tc2.0不能编译(其实是工具需要设置include与lib的路径)。这些都是初学者的烦恼。学会编译,先从汇编程序...

汇编语言问题,题目如下,我知道答案,但不懂,求详细解释
数据段:10E4:0000~10E4:FFFF;附加段:10F4:0000~10F4:FFFF;堆栈段:21F0:0000~21F0:FFFF;代码段:31FF:0000~31FF:FFFF。以上,是按照 10000H 字节计算的。实际上,有些段是重叠的,重叠部分,可以用物理地址计算出来。OF = 0 DF = 0 ZF = 0 CF = 0 ...

相似回答
大家正在搜