. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  书P65  [待解决] 回复[ 7次 ]   点击[ 338次 ]  
bossj
[帖 主]   [ 发表时间:2009-03-25 12:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-06 23:08
请问:
mov ax,1000H 
mov ss,ax 
mov sp,0010H 

mov ax,001AH 
mov bx,001BH 

PUSH ax 
PUSH bx 

sub ax,ax ;书上解释为,将AX清零,也可以用mov ax,0,sub ax,ax的机器码为2个字节, mov ax,0 的机器码为 3个字节。 
sub bx,bx 
pop bx ;书上解释为,从栈中回复AX,BX 原来的数据,当前站顶的内容是 
pop ax ;BX中原来的内容:001BH,AX中原来的内容001AH在栈顶的下面,所以要先POP BX,然后再POP AX。 
------------------------------------------------------------------ 
1.请问机器码为2字节。是AX与AX存储器的吗? 3字节是哪里的3个字节? 
2.已经将AX的数据清零了,下面用POP指令还能恢复存储器原来的数据吗? 
谢谢各位。
younggay
[第1楼]   [ 回复时间:2009-03-25 14:11 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
1.请问机器码为2字节。是AX与AX存储器的吗? 3字节是哪里的3个字节?  
================
每条指令都对应自己机器码,这样的对应不能按照源代码中的指令的操作数据直接对照的。这里我觉得没有必要去深究某条指令的字节是怎么形成的,对于立即数我们可以在字节中看到那个数据,但是对于不同的寄存器,机器码的变化会让人很难记忆的。

2.已经将AX的数据清零了,下面用POP指令还能恢复存储器原来的数据吗?
==============
能啊。AX寄存器清零了,pop是将此时栈中的数据存放到ax中,那么ax就又有数据了。就像我们把杯子中的水倒掉,然后再从壶里向杯子里倒点水,那么杯子里又有水了。能不能恢复ax原来的数据,就得看我们pop的数据是不是当初push进来的ax值。
younggay
[第2楼]   [ 回复时间:2009-03-25 14:12 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
楼主需要在看一下栈的知识,一定要理解透彻。
加油。
bossj
[第3楼]   [ 回复时间:2009-03-25 21:34 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-06 23:08
回复:[第2楼]
------------------
哦。原来是这样。我明白了。谢谢younggay
bossj
[第4楼]   [ 回复时间:2009-03-26 13:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-02-06 23:08
回复:[第1楼]
------------------
书上的图中。AX BX就是在栈空间中啊。。清空之后不就没有了吗?
qqlf
[第5楼]   [ 回复时间:2009-09-15 19:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-09-15 01:11
pop ax的含义。。
bluebird
[第6楼]   [ 回复时间:2009-09-19 23:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-08-30 20:59
第二个问题知道为什么,第一个....
wnfzy-126
[第7楼]   [ 回复时间:2009-09-28 14:36 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2009-08-22 20:30
bluebird: 对于汇编语言与机器语言的对应问题,是更高层次的东西,不必深究。

它们不是一一对应,对号入座的。例如MOV AX,0 教科书上是3个字节,如B8XXXX ,那么是B8对应 MOV吗?

不是这样,了解到这一点就行。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved