• 汇编笔记之四 包含多个段的程序


      为什么要写多个段的程序,我们之前只有一个代码段。现在要编写多个段的程序,是因为,程序有时候需要处理一些数据,然而这些数据是我们已经给出的,写好了的。也就是说,是程序里面预先定义好了的。

      我们知道,在windows下编程的时候,你不得不考虑到操作系统的屏蔽。这个时候,资料显示,有一段安全的内存空间,也就是0:200 ~0:2FF 这段内存空间可以供我们存放数据,但是,如果我们的数据过多。这个时候就必须得使用多个段来保存数据。

      下面来看看,多个段的程序结构:

      Assume cs:code,ds:data,ss:stack  ;从这里我们可以看出,程序有3个段

      data segment

        dw 0123h,0456h,0789h

      data ends

      stack segment

        dw
    0,0,0,0

      stack ends

      code segment

          
    start:

          
    mov ax,data

          
    mov ds,ax

          
    mov ax,stack

          
    mov ss,ax

          
    mov sp,10h

          
    mov bx,0

          
    mov ax,bx  ;初始化各个段寄存器和数据寄存器

          
    mov cx,3   ;设置循环次数

          
    Instack:

          
    push [bx]

          
    add bx,2

          loop Instack  
    ;入栈操作

          
    mov cx,3

          
    mov bx,0  ;循环次数和数据寄存器再次初始化

          
    Outstack:

          
    pop [bx]

          
    add bx,2

          loop Outstack  
    ;出栈操作

          
    mov ax,4c00h

          
    int 21h    ;程序返回

      code ends

      end start

      以上的代码实现了数据的倒序排列。也就是将 123 变成了 321 。

      以上程序,定义了数据段data和栈段stack,然后用栈段做中转,将数据倒序排列。

      

      

  • 相关阅读:
    美国商业经济金融发展史
    英国商业经济金融发展史
    NIO入门
    eclipse的debug
    一些待深入的问题
    Django REST Framework(一) Serializer和ModelSerializer
    同步/异步/阻塞/非阻塞/BIO/NIO/AIO各种情况介绍
    为了后端掌握的粗浅前端
    前后端分离之JWT用户认证
    Redis
  • 原文地址:https://www.cnblogs.com/LearningC/p/1955749.html
Copyright © 2020-2023  润新知