汇编中求给定数中的最大值(或最小值)
来源:互联网 发布:淘宝充值网店赚钱吗 编辑:程序博客网 时间:2024/05/07 02:14
汇编中求给定数中的最大值(或最小值),放至指定的存储单元中。每个数用16位表示
NAME SEARCH_MAX
DATA SEGMENT
BUFFER DW X1,X2,...Xn ;定义一个一组数为字型数16位
COUNT EQU $-BUFFER
MAX DW ? ;为那个最大数预留空间
DATA ENDS ;数据段结束
STACK SEGMENT PARA STACK ‘STACK’
DB 64 DUP(?) ;给堆栈段分配64个字节,没有说明内容
TOP EQU $-STACK
STACK ENDS ;堆栈段定义结束
CODE SEGMENT
START PROC FAR ;定义为一个远过程
ASSUME CS:CODE,DS:DATA,SS:STACK
BEGIN: PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX ;将AX寄存器的内容存放到DS段寄存器中
MOV AX,STACK
MOV SS,AX ;SS存放栈的段地址
MOV AX,TOP
MOV SP,AX;存放栈的偏移地址,指向栈的顶部
MOV CX,COUNT ;用CX作为循环的计数器
LEA BX, BUFFER ;将BUFFER 的地址存放到BX寄存器中
MOV AX ,[BX] ;将BX所在的地址存放的内容放至AX寄存器中
INC BX ;使BX的地址每次都向后一位,用于比较下一次
DEC CX ;循环每次减一
AGAIN: CMP AX,[BX];用于比较AX寄存器中的内容和BX所在地址的内容大小
JGE NEXT; 如果结果大于或等于0则跳转到下一个循环
MOV AX,[BX] ;若结果小于它,则交换两个寄存器的内容
NEXT: INC BX ;指向下一个地址
LOOP AGAIN ;循环一次就减一次
START ENDP ;这个过程结束
CODE ENDS ;代码段到此结束
END BEGIN ;整个程序到此结束
SS, SP, BP 三个寄存器
SS:存放栈的段地址;
SP:堆栈寄存器SP(stack pointer)存放栈的偏移地址;
BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到
比如说,堆栈中压入了很多数据或者地址,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址.一般除了保存数据外,可以作为指针寄存器用于存储器寻址,此时它默认搭配的段寄存器是SS-堆栈段寄存器.BP是16位的,再扩充16位就是EBP,用于32位编程环境的.一般高级语言的参数传递等等,转换为汇编后经常由BP/EBP来负责寻址\处理.
SP,BP一般与段寄存器SS 联用,以确定堆栈寄存器中某一单元的地址,SP用以指示栈顶的偏移地址,而BP可 作为堆栈区中的一个基地址,用以确定在堆栈中的操作数地址。
- 汇编中求给定数中的最大值(或最小值)
- Java算法——求三个数中的最大值(或最小值),5种方法
- 求两个数中的最大值最小值算法
- 求少数几个数中的最大值最小值与算法思考
- 把数组中的数拼接起来,求最大值(最小值)
- 给定几个数,求最大值
- 求数组中数的最大值、最小值(C语言)
- Arm汇编求数组最大值和最小值
- 求给定数组中的最大值
- 求给定数组中的最大值
- 求给定整数中的最大值
- 给定一个含有n个元素的整型数组a,求a中的最大值和最小值。
- Java中求List<double[]>中的最大值和最小值
- 求三个数的最大值和最小值(C程序)
- 求四个数的最大值和最小值
- 任意三个数求最大值和最小值
- 给定四个正整数,求出四个数的最大值和最小值
- 求一组数据中的最大值及最小值
- 更新Linux系统内核
- 读数据 写数据 上传 下载文件 整理
- java.lang.NoClassDefFoundError: org/apache/commons/io/output/NullOutputStream
- 如何用linux查看系统信息命令
- 买重点名校学区房不能不知的秘密:简单说说我放弃北京实验二小的真实原因
- 汇编中求给定数中的最大值(或最小值)
- Strut2判断是否是AJAX调用
- 在VC++6.0向导中完成项目迁移到VS2012版的错误
- Csharp: listview control binding database from datatable
- Csharp: listview control binding database from datatable
- Struts2性能调优拦截器
- win7+Ubuntu双系统修改启动项顺序
- 显示本机DNS缓存
- SLIP协议的缺陷与CSLIP