汇编程序:分支结构判断数字正负

分支结构判断数字正负

一、实验任务:

本次实验要求开发一个程序,用以分析并处理以下数据集: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

执行结果
在这里插入图片描述

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值