微机原理实验-汇编语言程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

应用数学学院信息与计算科学专业班__组学号姓名协作者______________ 教师评定_________________

实验题目汇编语言程序设计

一、实验目的与要求

实验目的:

掌握汇编语言程序设计的基本方法

实验要求:

设有九个学生某门课的成绩存放在数据区中。试编制一个程序,统计低于60分,60~69分,70~79分,80~89分,90~99分和100分的人数,并输出显示统计结果。

二、实验方案

要统计各个分数段的人数,首先要在数据段中预先存放学生的成绩,然后判断各学生的分数属于哪一个分数段。分数小于60即为不及格,大于等于60则执行下一步;判断是否小于70,若是则属于60~69这个段,否则执行下一步继续判断。输入过程有可能出现错误输入一个大于满分100分或者小于0的数,所以还要判断这个数是不是输入错误。在数据区中,存放9个学生的成绩,根据程序执行的结果,验证所设计的程序是否正确。

三、实验结果和数据处理

数据处理:程序代码及代码注释如下:

include io32.inc

.data

score DWORD 67 ,77 ,98 ,100 ,110 ,89 ,35 ,58 ,88

output1 byte '不及格(0-59)的人数是: ',0

output2 byte '及格(60-69)的人数是: ',0

output3 byte '中等(70-79)的人数是: ',0

output4 byte '良好(80-89)的人数是: ',0

output5 byte '优秀(90-99)的人数是: ',0

output6 byte '满分(100)的人数是: ',0

output7 byte '输入错误数: ',0

count1 byte 0 ;0-59段人数计数器

count2 byte 0 ;60-69段人数计数器

count3 byte 0 ;70-79段人数计数器

count4 byte 0 ;80-89段人数计数器

count5 byte 0 ;90-99段人数计数器

count6 byte 0 ;100段人数计数器

count7 byte 0 ;错误分数段人数计数器

.code

start:

mov ecx,lengthof score ;数组长度每次循环后ecx减1

mov esi,0

again:

mov eax,score[esi*(type score)] ;寄存器相对寻址,type score即为DWORD的大小,为4 call dispsid

cmp eax,0

jl flags0 ;判断是否小于0?是就转移到flags0

cmp eax,60 ;跟60比较大小

jl flags1

cmp eax,70

jl flags2

cmp eax,80

jl flags3

cmp eax,90

jl flags4

cmp eax,100

jl flags5

je flags6

jg flags7

flags0:

add count7,1

jmp next

flags1:

add count1,1

jmp next

flags2:

add count2,1

jmp next

flags3:

add count3,1

jmp next

flags4:

add count4,1

jmp next

flags5:

add count5,1

jmp next

flags6:

add count6,1

jmp next

flags7:

add count7,1

jmp next

next:

inc esi ;指向下一个数

loop again;循环

OUTPUT:

call dispcrlf ;回车换行

mov eax,offset output1

call dispmsg ;显示字符串(以0结尾) xor eax,eax ;异或使eax为0

mov al,count1

call dispsid ;显示有符号的十进制整数 call dispcrlf

mov eax,offset output2

call dispmsg

xor eax,eax

mov al,count2

call dispsid

call dispcrlf

mov eax,offset output3

call dispmsg

xor eax,eax

mov al,count3

call dispsid

call dispcrlf

mov eax,offset output4

call dispmsg

xor eax,eax

mov al,count4

call dispsid

call dispcrlf

mov eax,offset output5

call dispmsg

xor eax,eax

mov al,count5

call dispsid

call dispcrlf

mov eax,offset output6

call dispmsg

xor eax,eax

mov al,count6

call dispsid

call dispcrlf

mov eax,offset output7

call dispmsg

相关文档
最新文档