住宿人员统计程序1 题目需求分析1题目描述① 本次程序设计基于学校社会实践住宿人员统计场景通过遍历固定字符串完成人员分类计数。② 字符对应人员类型G代表女学生B代表男学生W代表女教师M代表男教师。③ 字符串以$符号作为结束标记程序读取到该符号即停止遍历统计。④ 核心需求遍历目标字符串分别统计四类人员总数量并存储到对应的内存单元中。⑤ 程序要求全程添加详细功能注释配套绘制完整程序执行流程图。2数据段预置说明① 题目预置数据段已完成定义包含目标字符串和四类人员计数存储单元初始计数值均为0。② 预置代码如下datasg segmentlist db WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$G db 0B db 0W db 0M db 0datasg ends③ 存储单元说明G存储女生数量B存储男生数量W存储女老师数量M存储男老师数量。3功能逻辑拆解① 初始化数据段寄存器建立程序与数据段的关联。② 定义字符串遍历指针从字符串首个字符开始依次读取数据。③ 对读取的字符进行分类判断匹配对应人员类型后对应计数单元数值自增。④ 检测到字符串结束符$后终止遍历循环结束统计工作。⑤ 调用DOS系统中断实现程序安全退出。2 完整带注释汇编程序1程序整体说明① 程序功能遍历人员标识字符串精准统计女学生、男学生、女老师、男老师四类人员数量。② 结束判定依据识别到字符$终止程序遍历。③ 数据存储方式四类人员数量分别存储在G、B、W、M字节内存单元中。2完整程序代码assume cs:codesg,ds:datasgdatasg segmentlist db WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$G db 0 ;女生数量存储单元B db 0 ;男生数量存储单元W db 0 ;女老师数量存储单元M db 0 ;男老师数量存储单元datasg endscodesg segmentstart:;初始化数据段寄存器DSmov ax, datasgmov ds, ax;定义SI为字符串遍历指针指向字符串首地址mov si, offset listloop_scan:;读取当前指针指向的字符mov al, [si];判断是否到达字符串末尾是则退出循环cmp al, $jz exit_program;判断字符为女老师W对应计数自增cmp al, Wjz count_W;判断字符为男老师M对应计数自增cmp al, Mjz count_M;判断字符为女生G对应计数自增cmp al, Gjz count_G;判断字符为男生B对应计数自增cmp al, Bjz count_B;指针后移读取下一个字符scan_next:inc sijmp loop_scan;女老师计数分支count_W:inc Wjmp scan_next;男老师计数分支count_M:inc Mjmp scan_next;女生计数分支count_G:inc Gjmp scan_next;男生计数分支count_B:inc Bjmp scan_next;程序遍历结束退出程序exit_program:mov ax,4c00hint 21hcodesg endsend start3 核心代码逻辑说明1遍历指针选型逻辑① 程序选用SI寄存器作为字符串遍历指针该寄存器为8086汇编专用字符串寻址寄存器。② 适配字符串批量读取场景寻址方式规范、运行稳定代码可读性强。2循环终止条件设计① 程序优先判定结束符$有效规避结束符号被统计计数的问题保证数据准确性。② 一旦检测到结束符立即终止循环提升程序运行效率。3多分支计数逻辑① 采用顺序比对、条件跳转的方式完成字符分类逻辑简单直观适配初学场景。② 所有计数分支设置统一出口指针偏移代码复用减少代码冗余结构规整。4存储单元设计① 四类人员计数变量均采用字节型数据定义适配人员数量较少的场景节约内存空间。② 直接使用自增指令完成计数运算逻辑简单高效不易出错。5 程序运行验证思路1程序编译运行① 将完整汇编代码编译、链接生成可执行程序文件。② 通过debug调试工具加载程序支持单步调试运行。2数据结果查验① 程序遍历结束后查看数据段对应内存单元数值。② DS段对应G、B、W、M单元数值即为四类人员的统计总数。3结果人工核对① 手动统计原始字符串中各类字符的总数量。② 对比程序运行结果验证程序统计功能的准确性。6 程序优缺点总结1程序优点① 代码注释完整每段功能均有对应说明可读性和可移植性强。② 程序逻辑分层清晰循环、分支结构规范无逻辑漏洞。③ 完全沿用题目原始数据段结构严格贴合题目设计要求。④ 采用标准DOS中断退出程序运行结束后自动释放资源运行稳定。2可优化方向① 当前采用顺序比对方式便于理解逻辑。② 进阶优化可采用跳转表结构简化多层判断代码进一步提升程序运行效率。
住宿人员统计程序
住宿人员统计程序1 题目需求分析1题目描述① 本次程序设计基于学校社会实践住宿人员统计场景通过遍历固定字符串完成人员分类计数。② 字符对应人员类型G代表女学生B代表男学生W代表女教师M代表男教师。③ 字符串以$符号作为结束标记程序读取到该符号即停止遍历统计。④ 核心需求遍历目标字符串分别统计四类人员总数量并存储到对应的内存单元中。⑤ 程序要求全程添加详细功能注释配套绘制完整程序执行流程图。2数据段预置说明① 题目预置数据段已完成定义包含目标字符串和四类人员计数存储单元初始计数值均为0。② 预置代码如下datasg segmentlist db WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$G db 0B db 0W db 0M db 0datasg ends③ 存储单元说明G存储女生数量B存储男生数量W存储女老师数量M存储男老师数量。3功能逻辑拆解① 初始化数据段寄存器建立程序与数据段的关联。② 定义字符串遍历指针从字符串首个字符开始依次读取数据。③ 对读取的字符进行分类判断匹配对应人员类型后对应计数单元数值自增。④ 检测到字符串结束符$后终止遍历循环结束统计工作。⑤ 调用DOS系统中断实现程序安全退出。2 完整带注释汇编程序1程序整体说明① 程序功能遍历人员标识字符串精准统计女学生、男学生、女老师、男老师四类人员数量。② 结束判定依据识别到字符$终止程序遍历。③ 数据存储方式四类人员数量分别存储在G、B、W、M字节内存单元中。2完整程序代码assume cs:codesg,ds:datasgdatasg segmentlist db WGBGMGBWBGGGBWBBMMBWGWBMWWGBGWBM$G db 0 ;女生数量存储单元B db 0 ;男生数量存储单元W db 0 ;女老师数量存储单元M db 0 ;男老师数量存储单元datasg endscodesg segmentstart:;初始化数据段寄存器DSmov ax, datasgmov ds, ax;定义SI为字符串遍历指针指向字符串首地址mov si, offset listloop_scan:;读取当前指针指向的字符mov al, [si];判断是否到达字符串末尾是则退出循环cmp al, $jz exit_program;判断字符为女老师W对应计数自增cmp al, Wjz count_W;判断字符为男老师M对应计数自增cmp al, Mjz count_M;判断字符为女生G对应计数自增cmp al, Gjz count_G;判断字符为男生B对应计数自增cmp al, Bjz count_B;指针后移读取下一个字符scan_next:inc sijmp loop_scan;女老师计数分支count_W:inc Wjmp scan_next;男老师计数分支count_M:inc Mjmp scan_next;女生计数分支count_G:inc Gjmp scan_next;男生计数分支count_B:inc Bjmp scan_next;程序遍历结束退出程序exit_program:mov ax,4c00hint 21hcodesg endsend start3 核心代码逻辑说明1遍历指针选型逻辑① 程序选用SI寄存器作为字符串遍历指针该寄存器为8086汇编专用字符串寻址寄存器。② 适配字符串批量读取场景寻址方式规范、运行稳定代码可读性强。2循环终止条件设计① 程序优先判定结束符$有效规避结束符号被统计计数的问题保证数据准确性。② 一旦检测到结束符立即终止循环提升程序运行效率。3多分支计数逻辑① 采用顺序比对、条件跳转的方式完成字符分类逻辑简单直观适配初学场景。② 所有计数分支设置统一出口指针偏移代码复用减少代码冗余结构规整。4存储单元设计① 四类人员计数变量均采用字节型数据定义适配人员数量较少的场景节约内存空间。② 直接使用自增指令完成计数运算逻辑简单高效不易出错。5 程序运行验证思路1程序编译运行① 将完整汇编代码编译、链接生成可执行程序文件。② 通过debug调试工具加载程序支持单步调试运行。2数据结果查验① 程序遍历结束后查看数据段对应内存单元数值。② DS段对应G、B、W、M单元数值即为四类人员的统计总数。3结果人工核对① 手动统计原始字符串中各类字符的总数量。② 对比程序运行结果验证程序统计功能的准确性。6 程序优缺点总结1程序优点① 代码注释完整每段功能均有对应说明可读性和可移植性强。② 程序逻辑分层清晰循环、分支结构规范无逻辑漏洞。③ 完全沿用题目原始数据段结构严格贴合题目设计要求。④ 采用标准DOS中断退出程序运行结束后自动释放资源运行稳定。2可优化方向① 当前采用顺序比对方式便于理解逻辑。② 进阶优化可采用跳转表结构简化多层判断代码进一步提升程序运行效率。