住宿人员统计程序
2026/7/1 14:48:37 网站建设 项目流程

住宿人员统计程序

1 题目需求分析

(1)题目描述

① 本次程序设计基于学校社会实践住宿人员统计场景,通过遍历固定字符串完成人员分类计数。

② 字符对应人员类型:G代表女学生,B代表男学生,W代表女教师,M代表男教师。

③ 字符串以$符号作为结束标记,程序读取到该符号即停止遍历统计。

④ 核心需求:遍历目标字符串,分别统计四类人员总数量,并存储到对应的内存单元中。

⑤ 程序要求:全程添加详细功能注释,配套绘制完整程序执行流程图。

(2)数据段预置说明

① 题目预置数据段已完成定义,包含目标字符串和四类人员计数存储单元,初始计数值均为0。

② 预置代码如下:

datasg segment

list db 'WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$'

G db 0

B db 0

W db 0

M db 0

datasg ends

③ 存储单元说明:G存储女生数量,B存储男生数量,W存储女老师数量,M存储男老师数量。

(3)功能逻辑拆解

① 初始化数据段寄存器,建立程序与数据段的关联。

② 定义字符串遍历指针,从字符串首个字符开始依次读取数据。

③ 对读取的字符进行分类判断,匹配对应人员类型后,对应计数单元数值自增。

④ 检测到字符串结束符$后,终止遍历循环,结束统计工作。

⑤ 调用DOS系统中断,实现程序安全退出。

2 完整带注释汇编程序

(1)程序整体说明

① 程序功能:遍历人员标识字符串,精准统计女学生、男学生、女老师、男老师四类人员数量。

② 结束判定依据:识别到字符$终止程序遍历。

③ 数据存储方式:四类人员数量分别存储在G、B、W、M字节内存单元中。

(2)完整程序代码

assume cs:codesg,ds:datasg

datasg segment

list db 'WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$'

G db 0 ;女生数量存储单元

B db 0 ;男生数量存储单元

W db 0 ;女老师数量存储单元

M db 0 ;男老师数量存储单元

datasg ends

codesg segment

start:

;初始化数据段寄存器DS

mov ax, datasg

mov ds, ax

;定义SI为字符串遍历指针,指向字符串首地址

mov si, offset list

loop_scan:

;读取当前指针指向的字符

mov al, [si]

;判断是否到达字符串末尾,是则退出循环

cmp al, '$'

jz exit_program

;判断字符为女老师W,对应计数自增

cmp al, 'W'

jz count_W

;判断字符为男老师M,对应计数自增

cmp al, 'M'

jz count_M

;判断字符为女生G,对应计数自增

cmp al, 'G'

jz count_G

;判断字符为男生B,对应计数自增

cmp al, 'B'

jz count_B

;指针后移,读取下一个字符

scan_next:

inc si

jmp loop_scan

;女老师计数分支

count_W:

inc W

jmp scan_next

;男老师计数分支

count_M:

inc M

jmp scan_next

;女生计数分支

count_G:

inc G

jmp scan_next

;男生计数分支

count_B:

inc B

jmp scan_next

;程序遍历结束,退出程序

exit_program:

mov ax,4c00h

int 21h

codesg ends

end start

3 核心代码逻辑说明

(1)遍历指针选型逻辑

① 程序选用SI寄存器作为字符串遍历指针,该寄存器为8086汇编专用字符串寻址寄存器。

② 适配字符串批量读取场景,寻址方式规范、运行稳定,代码可读性强。

(2)循环终止条件设计

① 程序优先判定结束符$,有效规避结束符号被统计计数的问题,保证数据准确性。

② 一旦检测到结束符,立即终止循环,提升程序运行效率。

(3)多分支计数逻辑

① 采用顺序比对、条件跳转的方式完成字符分类,逻辑简单直观,适配初学场景。

② 所有计数分支设置统一出口,指针偏移代码复用,减少代码冗余,结构规整。

(4)存储单元设计

① 四类人员计数变量均采用字节型数据定义,适配人员数量较少的场景,节约内存空间。

② 直接使用自增指令完成计数,运算逻辑简单高效,不易出错。

5 程序运行验证思路

(1)程序编译运行

① 将完整汇编代码编译、链接,生成可执行程序文件。

② 通过debug调试工具加载程序,支持单步调试运行。

(2)数据结果查验

① 程序遍历结束后,查看数据段对应内存单元数值。

② DS段对应G、B、W、M单元数值,即为四类人员的统计总数。

(3)结果人工核对

① 手动统计原始字符串中各类字符的总数量。

② 对比程序运行结果,验证程序统计功能的准确性。

6 程序优缺点总结

(1)程序优点

① 代码注释完整,每段功能均有对应说明,可读性和可移植性强。

② 程序逻辑分层清晰,循环、分支结构规范,无逻辑漏洞。

③ 完全沿用题目原始数据段结构,严格贴合题目设计要求。

④ 采用标准DOS中断退出程序,运行结束后自动释放资源,运行稳定。

(2)可优化方向

① 当前采用顺序比对方式,便于理解逻辑。

② 进阶优化可采用跳转表结构,简化多层判断代码,进一步提升程序运行效率。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询