汇编程序:分支结构判断数字正负
2023-12-28 16:44:29
    		分支结构判断数字正负
一、实验任务:
本次实验要求开发一个程序,用以分析并处理以下数据集:5, -4, 0, 3, 100, -51。程序的主要功能是判断每个数字是正数、零还是负数,并据此输出明确的判断结果。
二、实验报告:
1. 程序说明。说明程序的功能、结构。
功能:判断一组数据的每一个数是大于0,小于0,还是=0。
 结构:
 
 (1) 编译
 
(2) 连接
 
(3) 运行
 
单步执行
 


2. 画出程序框图。

3. 写出源程序清单和执行结果。
源程序清单
DATA SEGMENT
	BUF DB 5,-4,0,3,100,-51             ; 定义一个字节数组BUF,包含给定的一组数据
	COUNT EQU $-BUF                     ; 计算BUF数组的长度,存储在COUNT中
	Y1 DB 'Y=1',0DH,0AH,'$'             ; 定义字符串Y1,表示Y=1,后跟换行和字符串结束符
	Y2 DB 'Y=0',0DH,0AH,'$'             ; 定义字符串Y2,表示Y=0,后跟换行和字符串结束符
	Y3 DB 'Y=-1',0DH,0AH,'$'            ; 定义字符串Y3,表示Y=-1,后跟换行和字符串结束符
DATA ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATA             ; 假设代码段CS和数据段DS
START:
	MOV AX,DATA                        ; 将数据段地址加载到AX
	MOV DS,AX                          ; 将AX的内容移动到DS,设置数据段寄存器
	CLD                                ; 清除方向标志,确保字符串操作从低地址向高地址进行
	MOV CX,COUNT                       ; 将BUF数组的长度加载到CX,用于循环计数
	LEA SI,BUF                         ; 将BUF的地址加载到SI,用于数组遍历
AGAING:
	MOV AL,[SI]                        ; 将BUF中当前元素加载到AL
	CMP AL,0                           ; 比较AL与0
	JGE BIGR                           ; 如果AL大于等于0,跳转到BIGR
	MOV DX,OFFSET Y3                   ; 将字符串Y3的地址加载到DX
	JMP CRT                            ; 跳转到CRT输出字符串
BIGR:
	JE EQUL                            ; 如果AL等于0,跳转到EQUL
	MOV DX,OFFSET Y1                   ; 将字符串Y1的地址加载到DX
	JMP CRT                            ; 跳转到CRT输出字符串
EQUL:
	MOV DX,OFFSET Y2                   ; 将字符串Y2的地址加载到DX
CRT:
	MOV AH,9H                          ; 设置AH为9H,准备调用DOS中断输出字符串
	INT 21H                            ; 调用DOS中断21H,输出DX指向的字符串
	XOR DX,DX                          ; 清空DX寄存器
	INC SI                             ; 将SI增加1,指向BUF的下一个元素
	LOOP AGAING                        ; 递减CX,并在CX不为0时跳转回AGAING
	MOV AX,4C00H                       ; 将4C00H加载到AX,准备结束程序
	INT 21H                            ; 调用DOS中断21H,结束程序
CODE ENDS
	END START
执行结果
 
    			文章来源:https://blog.csdn.net/m0_74950751/article/details/135241963
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
    	本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!