- [tinyparticle] 不错,思路清晰 09/29 21:22
- [wsrf] 正确。 09/16 09:22
- [wsrf] 这个用DEBUG查看一下程序所占字节数就可以了,没有必要把每条指令所占字节数都记住,博主的做法是正确 09/16 08:22
- [tinyparticle] 取cx=0(cx取0-ffffh所占字节数是一样的),进debug查看程序总长度。提示:查看书P91 09/11 20:07
- [huibian2009] 呵呵,逻辑错误就是在编译的时候可以通过,但在执行的过程中会发生错误。 09/10 11:39
- [huibian2009] 呵呵,这道题考查的是对栈空时栈顶的设置,可以参考教程上关于栈的相关章节。这道题应该是选第1个。 09/09 08:37
- [911911] 谢谢已改正 09/08 15:51
- [wsrf] (1)说修改的内容的时候应该是从高字节到低字节写起。如内存单元220FE存储的字为5CCA,而不应该 09/08 08:53
- [911911] 改正了, 特意看了看前面章节的举例 才发现举的DEBUG操作时 数据是不加H的 写段程序指令时数据都 09/07 11:26
- [mywiil] debug下默认的就是16进制,所以不用加H,但是源代码中是需要加H的,因为源程序在编译的时候,数据 09/07 09:12
[2009-09-07 14:43] 第三章实验任务
(1)使用DEBUG,将上面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空.
MOV AX,FFFF
MOV DS,AX
MOV AX,2200
MOV SS,AX
MOV SP,0100
MOV AX,[0] ;AX= 5BEA
ADD AX,[2] ;AX= 5CCA
MOV BX,[4] ;BX= 30F0
ADD BX,[6] ;BX= 6029
PUSH AX ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 CA5C 改正 5CCA
PUSH BX ;SP= 00FC:修改的内存单元的地址是 220FC 内容为 2960 改正 6029
POP AX ;SP= 00FE:AX= 6029
POP BX ;SP= 0100:BX= 5CCA
PUSH [4] ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 F030 改正 30F0
PUSH [6] ;SP= 00FC:修改的内存单元的地址是 220FC 内容为 392F 改正 2F39
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
想了半天也没想明白,刚开始还想着是不是把上一个栈段的数据给转过来了,可是查了查初始的栈段根本就没有数据, 又用其它位置当栈段试着查了查 好象和现在的寄存器里的数据有些关系 此处留问号待以后清楚后编辑更正
MOV AX,FFFF
MOV DS,AX
MOV AX,2200
MOV SS,AX
MOV SP,0100
MOV AX,[0] ;AX= 5BEA
ADD AX,[2] ;AX= 5CCA
MOV BX,[4] ;BX= 30F0
ADD BX,[6] ;BX= 6029
PUSH AX ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 CA5C 改正 5CCA
PUSH BX ;SP= 00FC:修改的内存单元的地址是 220FC 内容为 2960 改正 6029
POP AX ;SP= 00FE:AX= 6029
POP BX ;SP= 0100:BX= 5CCA
PUSH [4] ;SP= 00FE:修改的内存单元的地址是 220FE 内容为 F030 改正 30F0
PUSH [6] ;SP= 00FC:修改的内存单元的地址是 220FC 内容为 392F 改正 2F39
(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0~2000:F中的内容会发生改变?
想了半天也没想明白,刚开始还想着是不是把上一个栈段的数据给转过来了,可是查了查初始的栈段根本就没有数据, 又用其它位置当栈段试着查了查 好象和现在的寄存器里的数据有些关系 此处留问号待以后清楚后编辑更正
评论次数(2) |
浏览次数(453) |
类型(汇编作业) |
收藏此文 |