几个汇编语言的问题

来源:百度知道 编辑:UC知道 时间:2024/05/11 03:33:09
不能理解以下几个问题.跪求答案.
1.test bl,6
如果:zf=0.bl中的D2D1不等于00,
zf=1.bl中的D2d1等于00.
2.ATART:mov ax,data
mov ds,ax
3.10进制25的ACS码怎么表示?

1.test bl,6
如果:zf=0.bl中的D2D1不等于00,
zf=1.bl中的D2d1等于00.

你把它写成二进制的比较好理解
7 6 5 4 3 2 1 0(这是bl的8个位,用7、6、5、4、3、2、1、0表示)
0 0 0 0 0 1 1 0(这是6的二进制形式)
---------------------执行test指令,实际上是进行与运算,所以结果就变成)
0 0 0 0 0 2 1 0(中间的2和1是指bl的第2和第1位)

那么可以看出
如果d2和d1为0,那么结果就为零了,所以ZF为1
如果d2或者d1不为零,那么结果就不是零了,此时zf=0
所以通过zf标志位就可以判断bl的d2和d1是不是同时为0

2.ATART:mov ax,data
mov ds,ax
这个怎么了?就是把data(一般是数据段的段名)所在段的段地址存放到ds中啊。
因为段名data出现在操作数部分时,系统把它看作立即数,而立即数不能直接传送到段寄存器中,所以用ax做中转。

3.10进制25的ACS码怎么表示?
用ASCII码表示25,应该分两位表示
2的ascii码是32H
5的ascii吗是35H
所以25的ascii码应该占用两个字节:32H和35H

如果想显示“25”,就应该用dos的2号功能先显示32H,再显示35H