. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验任务2  [待解决] 回复[ 10次 ]   点击[ 1033次 ]  
ghost2003
[帖 主]   [ 发表时间:2010-04-05 15:53 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2010-04-03 11:03
实验任务2 

(1)
使用debug,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。

Mov ax,ffff

Mov ds,ax
;段地址=ffffh

Mov ax,2000 ;

Mov ss,ax
; SS(栈的基础地址):2000h

Mov sp,0100 ;初始化栈顶;SS:SP=2000h:0100;从0101内存存储单元处开始写入数据

Mov ax,[0] ; ax=2200h

Add ax,[2] ; ax=5beah ;ax寄存器的最终结果

Mov bx,[4] ;bx=0000h

Add bx,[6] ;bx=30f0h ;bx寄存器的最终结果

Push ax 
;sp=0100h
修改内存单元的地址是2200:0101内容为 2200

Push bx ;sp=00feh
修改内存单元的地址是  ????:??? 内容为 ????

Pop ax ;sp=00fch

Pop bx ;sp=00feh

Push [4] ;sp=0100h
修改内存单元的地址是????:????内容为 ????

Push [6] ;sp=00feh
修改内存单元的地址是????:????内容为
????

红色的我认为错了,帮我确认一下。
nk1
[第1楼]   [ 回复时间:2010-04-05 16:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2010-03-20 10:35
红色的?
ghost2003
[第2楼]   [ 回复时间:2010-04-05 17:39 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:8
注册日期:2010-04-03 11:03
哦 这个不分颜色的。
修改内存单元的地址是2200:0101内容为 2200  这个是对的么?
lenient315
[第3楼]   [ 回复时间:2010-04-22 13:38 ]   [引用]   [回复]   [ top ] 
荣誉值:12
信誉值:0
注册日期:2010-04-20 22:33
跟LZ同问 我也不知道
plagueing
[第4楼]   [ 回复时间:2010-06-14 15:50 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-07-16 14:51
''Mov sp,0100 ;初始化栈顶;SS:SP=2000h:0100;从0101内存存储单元处开始写入数据''
我认为应该是从ss:sp=2000:00fe开始写入数据,栈储存数据时向内部填充
fs-xy
[第5楼]   [ 回复时间:2010-08-20 09:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-18 00:32
mov ax,ffff
mov ds,ax

mov ax,2200
mov ss,ax

mov sp,0100

mov ax,[0]            ;ax=58EAH
add ax,[2]            ;ax=5CCAH
mov bx,[4]            ;bx=30F0H
add bx,[6]            ;bx=6024H

push ax               ;sp=00FEH;修改的内存单元的地址是220FE内容为5CCAH
push bx               ;sp=00FCH;修改的内存单元的地址是220FC内容为6024H
pop ax                ;sp=00FEH;ax=6024H
pop bx                ;sp=0100H;bx=5CCAH

push 【4】              ;sp=00FEH;修改的内存单元的地址是220FE内容为30F0
push 【6】              ;sp=00FCH;修改的内存单元的地址是220FC内容为2F34


这是我的答案、就是把这些指令写入debug、然后执行看窗口里抄下来的
不知道对不对
fs-xy
[第6楼]   [ 回复时间:2010-08-20 10:07 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-18 00:32
照抄都抄错了、-_-
更改一下(没错的就不抄了):
……
mov ax,[0]                 ;ax=5BEAH
……
mov bx,[4]                 ;bx=31F0H
add bx,[6]                 ;bx=6122H
……
pop ax                     ;sp=00FCH;ax=6122H
pop bx                     ;sp=00FEH;bx=5CCAH

push [4]                   ;……内容为31F0H
push [6]                   ;……内容为2F32H
wxb2422
[第7楼]   [ 回复时间:2010-08-25 16:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-19 19:51
我在WIN7下实验结果是这样的:
mov ax,[0] ;ax=5bea
add,ax,[2] ;ax=5cca
mov bx,[4] ;bx=30f0
add bx,[6] ;bx=6029

push ax ;sp=00fe 2200:00fe 5cca
push bx ;sp=00fc 2200:00fc 6029
pop ax  ;sp=00fe ax=6029
pop bx  ;sp=0100 bx=5cca
push [4];sp=00fe 2200:00fe  30f0
push [6];sp=00fc 2200:00fc  2f39
cj657206427
[第8楼]   [ 回复时间:2011-03-19 14:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-03-17 20:16
该题目执行的代码和内存中的东西冲突的,比如说mov bx [4] ,这个数值每个电脑都是不同的,所以该题没有标准答案的,Bx都不会一样,但是肯定的是ax是一定相同的,不管在哪天电脑上都一样。
xyq13560
[第9楼]   [ 回复时间:2012-08-03 23:57 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-14 11:16
回复:[第5楼]
------------------
push bx到pop ax···SP是不变的吧?
push是执行sp-2再写·而pop是先读再执行sp+2
xuer2016
[第10楼]   [ 回复时间:2012-10-25 19:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-10-16 16:56
PUSH 和 POP 都是对16位的字单元操作的,所以SP增减都是2的倍数,SP置为0100H后,PUSH改变的是(0100-2)单元里的值
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved