《微机原理与汇编语言程序设计》实验指导书 1.统计某班学生的成绩等级并存放在相应变量中。等级的划分原则为: A:90-100 B:80-89C:70-79 D:60-69 E:0-59 2.编写程序,统计某个字变量中1的个数并存放在相应变量中。 实验四分支程序设计(一) 一、实验目的 掌握分支结构程序的编制方法。 二、实验环境 1.硬件:PC微机 2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容与要求 编制程序实现如下操作: 设有10个学生成绩,分别统计低于60分、60~69分、70~79分、80~89分、90 99分及100分的人数,并存放于S5、S6、S7、S8、S9、S10单元中。 四、程序框图 开始 亚 初始化计数单元 初始化循环计数值 初始化首地址 V 取一个成绩 Y <602 <艾<702 S5+1可 <702 S6+1 N <80? S#1 <90? S8+1 N <1002
《微机原理与汇编语言程序设计》实验指导书 8 1. 统计某班学生的成绩等级并存放在相应变量中。等级的划分原则为: A:90~100 B:80~89 C:70~79 D:60~69 E:0~59 2. 编写程序,统计某个字变量中 1 的个数并存放在相应变量中。 实验四 分支程序设计(一) 一、实验目的 掌握分支结构程序的编制方法。 二、实验环境 1. 硬件:PC 微机 2. 软件:DOS 系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容与要求 编制程序实现如下操作: 设有 10 个学生成绩,分别统计低于 60 分、60~69 分、70~79 分、80~89 分、90~ 99 分及 100 分的人数,并存放于 S5、S6、S7、S8、S9、S10 单元中。 四、程序框图 Y N S5+1 Y S6+1 N Y S7+1 N Y S8+1 N 开始 初始化计数单元 初始化循环计数值 初始化首地址 取一个成绩 <60? <70? <60? <70? <60? <60? <60? <60? <60? <60? 0? <80? <60? <60? <60? <60? <60? <60? 0? <90? <60? <60? <60? <60? <60? <60? 0? <100? <60? <60? <60? <60? <60?
《微机原理与汇编语言程序设计》实验指导书 V N S9+1 业Y S10+1 修改地址 N 业 循环结束 业 结束 五、程序清单: ; 统计学生成绩 DATA SEGMENT GRADE DW95H,60H,75H,92H,71H,86H,54组,89H,83H,76H N EQU(S—GRADE)/2 ORG 30H S5 DW 0 S6 DW 0 S7 DW 0 S8 DW 0 S9 DW 0 S10 DW 0 DATA ENDS STACK SEGMENT STACK STA DB 20 DUP (0) TOP EQU $-STA STACK ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA, SS:STACK START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,N LEA BX,GRADE ;成绩表首地址 COMPARE: MOV AX,[BX] CMP AX,60H :<60? 9
《微机原理与汇编语言程序设计》实验指导书 9 N S9+1 Y S10+1 修改地址 N 循环结束? 五、程序清单: ; 统计学生成绩 DATA SEGMENT GRADE DW 95H,60H,75H,92H,71H,86H,54H,89H,83H,76H N EQU ($—GRADE)/2 ORG 30H S5 DW 0 S6 DW 0 S7 DW 0 S8 DW 0 S9 DW 0 S10 DW 0 DATA ENDS ; STACK SEGMENT STACK STA DB 20 DUP (0) TOP EQU $—STA STACK ENDS ; CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE, DS:DATA, SS:STACK START: PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,N LEA BX,GRADE ;成绩表首地址 COMPARE: MOV AX,[BX] CMP AX,60H ;<60? 结束
《微机原理与汇编语言程序设计》实验指导书 JL FIVE CMP AX,70H :<70? JL SIX CMP AX,80H :<802 JL SEVEN CMP AX,90H :<902 JL EIGHT CMP AX,100H :=100 JNE NINE INC S10 JMP CHA NINE: INC S9 JMP CHA EIGHT: INC S8 JMP CHA SEVEN: INC ST JMP CHA SIX: INC S6 JMP CHA FIVE: INC S5 JMP CHA CHA: ADD BX,2 ;循环学生人数 LOOP COMPARE RET MAIN ENDP CODE ENDS END START 执行程序后,将结果分别填入下列表中 N(总人数) S5 S6 S7 S8 S9 S10 六、思考题 I)计算出各等级成绩百分比。分别填入下面表的A、B、C、D、E、中 2) 增加统计平均成绩一项。 平均成绩 E D C B A 10
《微机原理与汇编语言程序设计》实验指导书 10 JL FIVE CMP AX,70H ;<70? JL SIX CMP AX,80H ;<80? JL SEVEN CMP AX,90H ;<90? JL EIGHT CMP AX,100H ;=100 JNE NINE INC S10 JMP CHA NINE: INC S9 JMP CHA EIGHT: INC S8 JMP CHA SEVEN: INC S7 JMP CHA SIX: INC S6 JMP CHA FIVE: INC S5 JMP CHA CHA: ADD BX,2 ;循环学生人数 LOOP COMPARE RET MAIN ENDP CODE ENDS END START 执行程序后,将结果分别填入下列表中 N(总人数) S5 S6 S7 S8 S9 S10 六、思考题 1) 计算出各等级成绩百分比。分别填入下面表的 A、B、C、D、E、中 2) 增加统计平均成绩一项。 平均成绩 E D C B A
《微机原理与汇编语言程序设计》实验指导书 实验五分支程序设计(二) 一、实验目的 1.利用测试与转移指令实现分支。 2.利用比较与转移指令实现分支。 二、实验环境 1.硬件:PC微机 2.软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容与要求 1.利用测试与转移指令实现分支。 程序设计方法:在需要分支的地方用逻辑测试指令TEST进行分支条件的测试判断,再利 用各种条件转移指令实现程序分支。 2.利用比较与转移指令实现分支。 程序设计方法:在需要分支的地方用两数的比较指令CMP,或串比较指令CMPS等 进行分支条件的比较判断,再利用转移指令(如NZ、NC、JA、JB等)实现程序的分 支。 要求:自编程序: 1.在BLOCK开始的内存单元中有若干以字节为单位的正、负数,自编程序,试统计其 中正数的个数存放于M DATA单元中,负数的个数存放于P DATA单元中。 2.在BLOCK开始的内存单元中有若干以字节为单位的奇、偶数,自编程序,试统计其 中偶数的个数存放于M DATA单元中,奇数的个数存放于P DATA单元中。 四、部分程序清单 BLOCK DB37,一90,-32,60,一7,一120 COUNT EQU $-BLOCK P_DATA DB COUNT DCP (0) MDATA DB COUNT DCP (0) LEA SI,BLOOK LEA DI,P_DATA LEA BX,M_DATA MOV CX,COUNT RETRY: MOV AL,[SI] CMP AL,0 11
《微机原理与汇编语言程序设计》实验指导书 11 实验五 分支程序设计(二) 一、实验目的 1. 利用测试与转移指令实现分支。 2. 利用比较与转移指令实现分支。 二、实验环境 1. 硬件:PC 微机 2. 软件:DOS 系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容与要求 1. 利用测试与转移指令实现分支。 程序设计方法:在需要分支的地方用逻辑测试指令 TEST 进行分支条件的测试判断,再利 用各种条件转移指令实现程序分支。 2. 利用比较与转移指令实现分支。 程序设计方法:在需要分支的地方用两数的比较指令 CMP,或串比较指令 CMPS 等 进行分支条件的比较判断,再利用转移指令(如 JNZ、JNC、JA、JB 等)实现程序的分 支。 要求:自编程序: 1. 在 BLOCK 开始的内存单元中有若干以字节为单位的正、负数,自编程序,试统计其 中正数的个数存放于 M_DATA 单元中,负数的个数存放于 P_DATA 单元中。 2. 在 BLOCK 开始的内存单元中有若干以字节为单位的奇、偶数,自编程序,试统计其 中偶数的个数存放于 M_DATA 单元中,奇数的个数存放于 P_DATA 单元中。 四、部分程序清单 BLOCK DB 37,—90,—32,60,—7,—120 COUNT EQU $—BLOCK P_DATA DB COUNT DCP (0) M_DATA DB COUNT DCP (0) „„„„„ LEA SI,BLOOK LEA DI,P_DATA LEA BX,M_DATA MOV CX,COUNT RETRY: MOV AL,[SI] CMP AL,0
《微机原理与汇编语言程序设计》实验指导书 JGE PP MOV [BX],AL INC BX IMP L00P1 PP: MOV [DI],AL INC DI L00P1: INC SI LOOP RETRY …… 五、思考题 如果将比较指令改为测试指令(加下划线处),程序需做哪些改动? 实验六分支程序设计(三) 一、实验目的 1)熟悉分支程序的编写。 2)学习DOS系统功能调用(NT21H/O8H,AL=ASCI字符)从键盘接收单个字符的用 法。 3)掌握数据的输入与输出方法。 二、实验环境 1)硬件:PC微机 2)软件:DOS系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容 1)用DOS系统功能调用NT21H的08H功能接收键盘字符(AL=字符),若是F,显 示“This is the first word string.',若是S,显示“This is the second word string.’,否则退出。 2)设计一数据块间的搬移程序 四、实验要求 1)实验前准备好汇编语言源程序,阅读实验指导书关于调试方法与步骤的内容。 2)实验要求在PC机上进行。 五、编程提示 1)用DOS系统功能调用NT21H的09H功能显示字符串。 2)用P命令执行程序,可看出结果。 3)显示字符串参考程序 12
《微机原理与汇编语言程序设计》实验指导书 12 JGE PP MOV [BX],AL INC BX JMP LOOP1 PP: MOV [DI],AL INC DI LOOP1: INC SI LOOP RETRY „„„„„ 五、思考题 如果将比较指令改为测试指令(加下划线处),程序需做哪些改动? 实验六 分支程序设计(三) 一、实验目的 1) 熟悉分支程序的编写。 2) 学习 DOS 系统功能调用(INT 21H/08H,AL=ASCII 字符)从键盘接收单个字符的用 法。 3) 掌握数据的输入与输出方法。 二、实验环境 1)硬件:PC 微机 2)软件:DOS 系统、EDIT.EXE、MASM.EXE、LINK.EXE、DEBUG.EXE 三、实验内容 1) 用 DOS 系统功能调用 INT 21H 的 08H 功能接收键盘字符(AL=字符),若是 F,显 示“This is the first word string.’,若是 S,显示“This is the second word string.’,否则退出。 2) 设计一数据块间的搬移程序 四、实验要求 1) 实验前准备好汇编语言源程序,阅读实验指导书关于调试方法与步骤的内容。 2) 实验要求在 PC 机上进行。 五、编程提示 1) 用 DOS 系统功能调用 INT 21H 的 09H 功能显示字符串。 2) 用 P 命令执行程序,可看出结果。 3) 显示字符串参考程序