level 5
在本吧的学习资源“俺偶像”里从零开始学汇编,看到喇叭发声程序时,有一点没弄明白。
程序前两句:
in al,61
xor al,2
不明白的是第二句,操作码为什么是“2”?教程里说:用异或操作改变某个位时要注意必须用"1"作为操作数,只有用"1"才能达到让某个位连续"翻转"的目的。在给出的程序中由于要让AL的bit1位改变,所以操作数的bit1位是"1"。
这不是矛盾吗?试了下,输入“1”时喇叭不发声,输入“2”发声,证明不是作者的笔误啊。回到前面细看了下,也没找到哪句话与此有关。请大家指教一下,多谢!
2009年04月10日 10点04分
1
level 6
比特位是从0开始的
0 1 2 3 4 5 6 7
一个字节共8位
2009年04月11日 03点04分
2
level 6
mov al, 0fch
out 61h,al
mov al, 03h
out 61h,al
2009年04月11日 09点04分
4
level 5
感谢debug_storm 的指教,但还是没太明白, “xor al,2 ”里的“2”是“操作数”,还是这项操作要改变的“比特位”呢?
如果是“操作数”,那么就与“用异或操作改变某个位时必用‘1’作为操作数”相矛盾;
如果是这项操作要改变的“比特位”,那么,该书作者的“要让AL的bit1位改变”这句话中的“bit1”位,实质是您所说的“一个字节共8位”中的“第二位”,对吗?
4楼的大师啊,您就别回答出这么高深的东西让俺一头雾水了。
2009年04月11日 12点04分
5
level 5
又琢磨了一下,是不是这样:“xor al,2 ”里的“2”是个十进制的操作数,发送给机器后,机器识别出来的是二进制的“10”,这个“10”的比特1位是“1”,对吗?
如果真是这样,那么该书作者所说‘必须用"1"作为操作数’这句话就绝对是描述不当或者说是“描述不详细”。
2009年04月11日 12点04分
6
level 5
又回到那本书里看了一下,修改一下上面帖子中的一句话:
“xor al,2 ”里的“2”是个十进制的操作数,应改为:“xor al,2 ”里的“2”是个十六进制的操作数。
据:“DEBUG只接收16进制数”。
2009年04月11日 12点04分
7
level 5
唉,问题又出来了,如果“xor al,2 ”里的“2”是个十六进制数,那为什么末尾没有加“H”呢?
疑问太多了,大概您会嫌我烦了吧,可是没办法,要是有疑问没弄明白,我会一直吃不香睡不香啊!
2009年04月11日 12点04分
8
level 6
看好了,假设61h端口初始状态是这样的
61h = 11111100
b0和b1位为0,喇叭不响
xor 61h, 2 等于 xor 61h, 00000010
61h = 11111110
发现什么了吗? b1位状态翻转了,其它位不变。
而b1位正是控制喇叭响与不响的开关。
就是这么简单
2009年04月13日 04点04分
9
level 6
"只有用"1"才能达到让某个位连续"翻转"的目的。"
这是哪本教程说的,我不相信会有一本教程说这样的话。
2009年04月13日 04点04分
10
level 5
谢谢您的指教,基本上明白了,也就是说,“xor 61h, 2 ”这里的2是十六进制,而机器识别出来的是二进制的”10“,对吧。
我说的那本书在本吧置顶的贴子”学习资源“里,5楼”俺偶像“下面的链接——汇编语言——目录——第二章(2.2.2程序透析)——下一页(第17页),第二自然段。
2009年04月13日 06点04分
11
level 6
哦,我明白了,这里的1二进制的1,
1 xor 1 = 0
1 xor 0 = 1
但是你要知道二进制里只有0和1,
等于顶上面这句话是白说了嘛。
他那个小教程我也看过,写得详细具体,但是很哆嗦的,唔唔。
2009年04月14日 02点04分
12
level 6
十进制的2=十六进制的2
debug里面使用立即数不用加h
debug里面使用的立即数都被当作十六进制数处理
2009年04月14日 04点04分
13
level 6
Chuck Lee 《PC汇编语言实战精解》
俺觉得它挺适合自学计算机的人
里面最值得推崇的是作者所表达出来的自学态度与方法
2009年04月14日 04点04分
14
level 5
谢谢debug_storm & blueglass2两位大师!
2009年04月14日 12点04分
15
level 0
关键是下面的LOOP,
XOR一次就变一次。喇叭不是一直响的,是d-d-d-d-d,,,,这样的。
2009年10月27日 15点10分
16
level 1
你们好,我用的xp,而且在带命令行模式下试了这个例子就是没声音,怎么回事?
2014年09月17日 13点09分
18
level 12
自从学了汇编就扔掉了,对不起老师,对不起党的培养!
2014年11月18日 00点11分
19