博主是个大笨比,只会阿巴阿巴阿巴
题目
已知在ARRAY数组中有8个无符号字节数据,编写完整的汇编语言程序,将ARRAY数组中的最大值放入RESULT 单元中
指令 | 功能 |
---|---|
JC | CF=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♪(・ω・)ノ
博主也是刚开始学习,请大佬勿喷,我只是个小菜鸡
每天一道 打卡~