zoukankan      html  css  js  c++  java
  • 【汇编程序】给定的个数的数据中寻找最大值,放到max存储单元中—循环结构

    程序需求:在给定的个数的数据中寻找最大值,放到max存储单元中

    编程思路:首先定义一个数据段 用buf来存放一串数据  count变量用来获取到多少个数据,($-buf)/2 获取数据的个数

    定义一个堆栈段 先占用100个存储空间,length获取到空间的大小。

    程序段对段地址和偏移地址进行声明,因为循环我们使用的是cx的值来判断 循环的次数,因此 用获取到数据的个数 赋值给cx值,然后先将buf中第一个元素的值赋值给ax,bx用来最基址变址寻址,cmp ax,[bx] 判断 下一个数字是否 大于这个数字。jge如果大于 说明[ax]中的数值大于[ax+1]中的数值,因此将程序继续向下执行,直到程序执行到比[bx]这个数大的数,就跳出循环 将此时bx中的内存单元的值 赋值给max 程序执行完毕

    ;在循环程序中,常用计数器如CX寄存器控制循环次数,先将计数器置一个初值 用来表示循环操作的次数
    ;每执行一次 计数器减1 减到0为止 表示循环结束
    ;程序需求:在一串给定的个数的数据中寻找最大值,存放到MAX存储单元中
    data segment ;数据段
        buf dw 1234h,3200h,4832h,5600h  ;一串字数据
        count equ ($-buf)/2             ;数据个数  该语句的含义是定义一个常量count 其大小为从当前地址$到buf的一半 就是将数据的个数赋值给他
        max dw ?                        ;用来存储程序要放置的最大的数
    data ends
    
    stack segment 'stack'               ;堆栈段
        stapn db  100 dup(?)
        top equ length stapn            ;变量的单元数  type 是变量的类型  size 返回变量的总字数
    stack ends  
    
    code segment
     main proc far
          assume cs:code,ss:stack
       start:mov ax,stack ;设置堆栈段
            mov ss,ax
            mov sp,top
            push ds
            sub ax,ax
            push ax
            mov ax,data; 设置数据段
            mov ds,ax
            mov cx,count ;字符个数(循环次数)
            lea bx,buf   ;bx- buf的偏移地址
            mov ax,[bx]  ;ax-缓存器中取一个数
            dec cx; 循环次数减一
            
         again:inc bx ;修改地址指针
              cmp ax,[bx] ;ax与后取的数相比
              jge next 
              mov ax,[bx] 
          next:loop again 
               mov max,ax
               ret
               
         main endp
     code ends
      end main
    
  • 相关阅读:
    thinkphp 事物回滚
    文字超出部分以省略号隐藏
    js倒计时
    js 日期转为时间戳
    jquery 获取url地址参数
    spreadjs 自定义菜单事件
    spreadjs 点击事件
    spreadjs 自定义上传文件单元格
    spreadjs 小记
    Json数组排序
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860877.html
Copyright © 2011-2022 走看看