汇编语言:统计输出数组中的元素相对于某个定值的大小情况
作者:互联网
汇编语言:统计输出数组中的元素相对于某个定值的大小情况
题目要求
要求事先在数据段事先定义的长度为100H字节的数组中,计算大于42H的无符号数的个数并存入字单元UP中,计算小于42H的无符号数的个数并存入字单元DOWN中,最终输出数组长度、UP和DOWN的值。
编程平台
Masm for Windows 集成实验环境 2012.5
代码实现
DATAS SEGMENT
array DB 32 DUP(9H,17H,23H,37H,42H,5EH,6AH,70H);预先定义好数组
count DW $-array;记录数组长度
UP DW 0
DOWN DW 0
scale DW 10;以十进制数形式输出
printALL DB 'ALL: $'
printUP DB 13,10,'UP: $'
printDOWN DB 13,10,'DOWN: $'
DATAS ENDS
STACKS SEGMENT STACK
DB 200H DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
;主程序
MAIN PROC
MOV AX,DATAS
MOV DS,AX
;遍历数组,所有元素逐个与42H比较
LEA SI,array;数组首地址
MOV CX,count;数组长度
l:
LODSB;将DS:[SI]读到的字节放入AL
CMP AL,42H
JE e
JB b
INC UP
JMP e
b:
INC DOWN
e:
LOOP l
LEA DX,printALL;显示数组长度信息提示
MOV AH,9H
INT 21H
MOV AX,count
CALL SUBP;将AX以十进制形式输出
LEA DX,printUP;显示数组中大于42H的元素数量信息提示
MOV AH,9H
INT 21H
MOV AX,UP
CALL SUBP;将AX以十进制形式输出
LEA DX,printDOWN;显示数组中小于42H的元素数量信息提示
MOV AH,9H
INT 21H
MOV AX,DOWN
CALL SUBP;将AX以十进制形式输出
MOV AH,4CH
INT 21H
MAIN ENDP
;子程序
;功能:以十进制形式输出AX中的值。
;入口参数:AX存放要输出的字内容,字变量scale存放要使用的进制。
SUBP PROC
MOV BX,scale
MOV CX,0;记录要输出的位数
lop1:
MOV DX,0
DIV BX
PUSH DX;余数入栈
INC CX
CMP AX,0;也可以写成OR AX,AX
JNE lop1
lop2:
POP DX
ADD DL,30H;转换成对应的ASCII码
MOV AH,2
INT 21h
LOOP lop2
RET
SUBP ENDP
CODES ENDS
END MAIN
如果文章内容出错或者您有更好的解决方法,欢迎到评论区指正和讨论!
标签:42H,汇编语言,MOV,UP,定值,数组,AX,DOWN 来源: https://blog.csdn.net/weixin_40589192/article/details/107009002