最大值 汇编

BUFFER处给出了多个无符号数,请找出其中的最大值,放至MAX指定的存储单元中

1,

1,这个代码有缺陷,是在知道有几位数的时候才可以用,提前定了cx寄存器的值
(1),流程图
在这里插入图片描述
(2),代码



assume cs:code
,ds:data

data  segment

  buffer dw 2,8,54,6,9,37,32

          max dw ?

data ends 

code segment 

start :  

    mov ax,data

    mov ds,ax

    mov bx,0  
;设置最小数0

    mov si,0  
;第一个数的地址

mov cx,7       ;七个数共7次比较

s0:

    mov ax,[si]    ;将要比较的数放入ax寄存器中

    cmp ax,bx     ;进行比较

    jna s1         ;如果进行比较的数比bx中的数小,则进行下一个数的比较

   mov bx,ax      ;如果进行比较的数比bx中的数大,则进行置换

s1:

   add si,2        ;比较的数小跳到这个循环,进行下一个数的比较

  loop s0

over: mov max,bx   ;将最大数放入max指定的存储单元

      mov ax,4c00h

    int 21h

code ends 

end start        


2,
在学过了shr指令后,可以在不知道多少个数进行比较时进行编程

`代码中用到了shr指令,该指令是逻辑右移指令,右移一位相当于将数据整除2;

与之对应的是shl指令,此指令是逻辑左移指令,左移一位相当于将数据乘2!
由于使用的时字节位,一个数据占用两个地址,就可以用到shr指令

mov cx,offset max-offset buffer;数据区内存单元的个数      
shr cx,1;cx右移一位,得到字型数据的个数,即数组中元素的个数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值