. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第三章检测题中的一小题的疑问:mov ah,0 是清空还是ah置0呢?  [待解决] 回复[ 8次 ]   点击[ 523次 ]  
zwhling
[帖 主]   [ 发表时间:2011-11-30 16:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-11-24 15:24
能够只将al中的内容压入栈的指令序列是__3___。  
 1、  push al  
 2、  pop ax  
 3、  mov ah,0  
     push ax  
 4、  mov ax,0  
     push  

答案选择3,指令mov ah,0的意思是将寄存器ah置0还是清空呢? 
如果是置0,那么执行压栈操作,0肯定会入栈,就不单纯把al压栈了 
如果是清空,那么3正确,如果是这样的话mov ax,0到底是传送0到ax中还是将ax清空呢? 

实验mov ax,0   push ax  发现是将ax中得0压栈了,说明mov ax,0是传送指令,并没有将ax清空 
实验又发现mov ah,0  push ax   发现确实是只把al压栈,那说明mov ah,0 是将ah清空 

这个很难理解??????、
tomato
[第1楼]   [ 回复时间:2011-11-30 18:06 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
置零和清空是一个意思。题目是将al中的内容入栈,至于ah是否改变,这个可以不管,高8位补零al值的大小是没有变的。
308272108
[第2楼]   [ 回复时间:2011-12-26 09:17 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2011-12-25 10:18
ah和al是两个分别独立的寄存器,清空的意思不是说一点数据都不存在,计算机只要运行起来,不管何时,寄存器都有数据存在,所以正如楼上所说,置零和清空是一个意思。对于这道题来讲,因为push只能压入2字节数据,只能使用16位寄存器,所以此题意思是如何将ah中的数据抹掉,只保存al中的数据不变。
tiangcin
[第3楼]   [ 回复时间:2012-03-07 19:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-24 17:31
啊,原来我唯一错的题是这一道,理解这道题的思路了。
tiangcin
[第4楼]   [ 回复时间:2012-03-07 19:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-24 17:31
我对这个答案的理解是,既然题目要求只将al的内容push入栈;又因为push操作的是字,直接push al是不行的,我们就用ax来存al的内容;如果ah中有内容而不进行清空操作,那么入栈的结果就会是ax入栈;所以将ah清空,入栈的才只是是al的内容。
novelfan
[第5楼]   [ 回复时间:2012-06-23 23:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-23 18:43
其实我觉得不将ah置零也无所谓,直接push ax就行啦。
因为一般来说我们进行入栈操作,都是为了保护现场,以便恢复。因为下面的某些代码可能修改al的值。。。
xuer2016
[第6楼]   [ 回复时间:2012-10-25 19:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-16 16:56
计算机中只有0和1,你觉得置0和清空有区别吗?
mengdana
[第7楼]   [ 回复时间:2013-01-01 19:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-01 17:35
这题出得毫无意义嘛,你就直接PUSH AX,将来POP AX,这样AL的值还是原来的值嘛,跟AH没有关系的嘛。
mengdana
[第8楼]   [ 回复时间:2013-01-01 19:35 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-01-01 17:35
其实就是排除1、2、4,所以是3,但3里的mov ah,0完全是故意绕人眼的,这句本来可以没有。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved