|
主题 : : 汇编指令的疑问 [待解决] |
回复[ 10次 ]
点击[ 433次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-01-15 11:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-29 12:50 |
如果给定八位数据18送入AX,那么这个数据送到那个八位寄存器,是AL还是AH。 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-01-15 18:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2007-12-08 14:22 |
ax = ah * 100h + al
mov ax, 18h 相当于 mov ax, 0018h 这个时候 ah = 00 al = 18 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-01-15 23:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
|
|
|
|
|
[第3楼]
[ 回复时间:2010-01-16 16:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-29 12:50 |
ax = ah * 100h + al这个是什么意思 | | |
|
|
|
|
[第4楼]
[ 回复时间:2010-01-16 23:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51 |
自己在debug下做个实验,
mov ax,18
mov ax,1800
比较一下, 就清楚啦。 | | |
|
|
|
|
[第5楼]
[ 回复时间:2010-01-17 11:55 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-29 12:50 |
MOV AX,18他没有指明那个寄存器中,就将这8位数据默认放在AL低字节中 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-01-19 14:10 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-01-13 10:56 |
MOV AX,18他没有指明那个寄存器中,就将这8位数据默认放在AL低字节中
---------------
这个不对吧,把18转换成十六进制是12H。
mov ax,18
mov ax,12h
mov ax,0012h
----------
这三条指令是相等的,不是“就将这8位数据默认放在AL低字节中”,上面这条指令是把12传给ax,虽然功能上是11h传给al了,但同时把0传给了ah。(可以debug验证) | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-01-21 12:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-29 12:50 |
|
|
|
|
|
[第8楼]
[ 回复时间:2010-01-21 12:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-12-29 12:50 |
|
|
|
|
|
[第9楼]
[ 回复时间:2010-01-21 22:03 ]
[引用]
[回复]
[ top ] | |
荣誉值:3
信誉值:2
注册日期:2010-01-04 23:00 |
如果AX=FFFFH,执行mov ax,11H,那么执行后AX=0011H,并不会仅修改AL,而是整个AX。
当进行16位运算时,可以忽略AL,AH的存在。
进行8位运算时,也不用考虑溢出到高位问题。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2010-02-04 20:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:4
信誉值:0
注册日期:2010-02-02 22:32 |
ax是16位的寄存器,18转换成16进制后为12H,所以当MOV AX,12H时,它会把12H转换成0012H,即00送给AH,12送给AL,此时AX就会变成0012H. | | |