zoukankan      html  css  js  c++  java
  • 汇编笔记之四 包含多个段的程序

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

      我们知道,在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,然后用栈段做中转,将数据倒序排列。

      

      

  • 相关阅读:
    JS常用数值验证
    JS遍历对象的属性和值
    SpringBoot解决特殊符号 []报400问题
    postman工具的用法
    SpringBoot使用谷歌方式生成图片验证码
    hibernate配置多对多ORM映射关系
    hibernate配置一对多ORM映射关系
    Class文件结构
    垃圾收集器与内存分配策略
    hibernate持久化类和一级缓存
  • 原文地址:https://www.cnblogs.com/LearningC/p/1955749.html
Copyright © 2011-2022 走看看