每天一道汇编题(5)

博主是个大笨比,只会阿巴阿巴阿巴

题目

已知在ARRAY数组中有8个无符号字节数据,编写完整的汇编语言程序,将ARRAY数组中的最大值放入RESULT 单元中

指令功能
JCCF=1 有进位/有借位 转移
CMP如果两数字为无符号数字,则影响CF标志位,没有借位 CF=0,否则CF = 1
XCHG两数字交换指令
分析

1.数组ARRAY 是 8个 无符号字节数据 -> DB 定义
2.最大值放入 RESULT 中

解答(思路就是使用CMP指令 以CF为标志位进行判断即可)

Data SEGMENT
	ARRAY db 1,2,3,4,5,6,7,8
	RESULT db ?
Data ENDS
Code SEGMENT
	ASSUME DS:Data,CS:Code
Start:
	MOV AX,Data
	MOV DS,AX
	;=========================================================================
	MOV RESULT,0 ;RESULT单元清零
	MOV DH,0     ;已知是字节数据 所以可以将高位清零 为了在DEBUG中更好看到数据
	LEA BX,ARRAY ;取出ARRAY在段内的有效偏移地址 赋值给BX
	MOV CX,8     ;8个无符号数  循环八次
Compare:            
	MOV DL,[BX]  ;依次取出数据 放入DL中
	INC BX       ;因为是字节 不是 字 所以用INC 使BX所存的地址+1
	CMP DL,RESULT;比较DL 与 RESULT的大小
	JC  Next     ;如果 CF = 1 就是DL - RESULT 有借位 DL - RESULT < 0 则继续向下比较
	XCHG RESULT,DL;如果 CF = 0 就是DL - RESULT 没有借位 DL - RESULT > 0 则将 RESULT 与 DL交换 
Next:
	LOOP Compare 
	;=========================================================================
	MOV DL,RESULT ;将最终的结果放入DL中
	MOV DH,0      ;将DH为清零 (只为了在DEBUG中能更好的看到结果)
	MOV AX,4CH
	INT 21H
Code ENDS
END Start

如果有错误请在评论中指出,Thanks♪(・ω・)ノ

博主也是刚开始学习,请大佬勿喷,我只是个小菜鸡

每天一道 打卡~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值