| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
 本帖最后由 shuiyu 于 2017-7-14 23:06 编辑  
 
越努力,越幸运。欢迎大家来看我的笔记  小白刚学,不对的请各位大佬指正,谢谢   
 
第三十讲开始几分钟就是检测点6.1了,所以这一次笔记就先讲检测点的内容。 
先准备一下需要在检测点用到的知识。 
 
一、在代码段中使用栈 
(1)我们首先要有一段可当作栈的内存空间。如前所述,这段空间应该由系统来分配。我们可以在程序中通过定义数据来取得一段空间,然后将这段空间当作栈空间来用。  
(2)栈:记住以下两点应该差不多了 
1.任意时刻,SS:SP指向栈顶元素。 
2.出栈(push):减2。        入栈(pop): 加2。寄存器出栈的顺序要和入栈的顺序相反。 
(3)dw和db:dw为定义字型数据(十六位),db为定义字节型数据(八位)。 
 
二、检测点6.1 
(1)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,完成程序: 
解: 
assume cs:codesg  
codesg segment  
        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h  
start:  mov ax,0  
        mov ds,ax  
        mov bx,0  
        mov cx,8  
    s:  mov ax,[bx]  
         mov cs:[bx],ax  
        add bx,2  
        loop s  
        mov ax,4c00h  
        int 21h  
codesg ends  
end start 
 
答案剖析: 
1.题目是要求我们要用内存0:0~0:15单元中的内容(就是0000:0000~0000:0015内存里的数据),所以题目定义DS为0,即使段地址指向0000:0000 
2.bx、cx的赋值就不要我说了吧 
3.然后是    s:  mov ax,[bx]         使地址0000:0000地址的内容赋值给ax。 
4.mov cs:[bx],ax         cs是一个段地址,而cs:[bx]就是指: 段地址+偏移地址;也就是我们题目中dw赋值的那八个字型数据的地址。 
5.后面的步骤我就不一一解释了(后面都不会,前面肯定也不会滴  ),最重要的是3、4这两步,理解就一目了然。 
 
 
(2)下面的程序实现依次用内存0:0~0:15单元中的内容改写程序中的数据,数据的传送用栈来进行。栈空间设置在程序内。完成程序: 
解: 
assume cs:codesg  
codesg segment  
        dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h  
        dw 0,0,0,0,0,0,0,0,0,0  
start:  mov ax, cs  
        mov ss,ax  
        mov sp, 36 
        mov ax,0  
        mov ds,ax  
        mov bx,0  
        mov cx,8  
s:  push [bx]  
         pop cs:[bx] 
        add bx,2   
        loop s  
        mov ax,4c00h  
        int 21h  
codesg ends  
end start 
 
答案剖析: 
1.看清楚题目,第二个dw是十个字单元用作栈空间,故开辟了8+10=18个字的内存空间。所以赋值sp的时候要注意了 
2.首先(就是入口开始1-3句)定义栈段,并且指向栈顶ss:sp; sp为36,为什么为36我第一步已经讲了 
3.定义数据段(入口开始3、4句),即使段地址指向0000:0000 
4.bx、cx的赋值就不要我说了吧 
5.push [bx] 入栈,即:0000:0000地址的内容进入栈段,段地址为:ss   偏移地址为35 
6. pop cs:[bx] 出栈,即:把栈段,段地址为:ss   偏移地址为35中的内容复制到段地址为:ss   偏移地址为0里面(其实就是把0000:0000地址的内容复制到栈段中) 
5.后面的步骤我就不一一解释了(后面都不会,前面肯定也不会滴  ),最重要的是5、6这两步,理解就一目了然。 
 
 
 
谢谢小甲鱼带来的视频教程,感谢!!    
 
 
    
本节结束,多谢览阅! 
越努力,越幸运。谢谢大家来看我的笔记  小白刚学,不对的请各位大佬指教,谢谢   |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |