本文主要是介绍汇编语言(2016级)实验5 子程序与条件转移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
实验5 子程序与条件转移
1. 实验目的
会利用条件转移指令循环和控制结构解决问题
训练程序中要加注释
2. 实验内容
任务1-求最大值
在BUFFER处给出了多个无符号数,请找出其中的最大值,放至MAX指定的存储单元中。
data segmentbuffer dw 35098, 17758, 54582, 61504, 46054, 58513, 4409, 7902, 14255dw 40623, 47645, 15575, 51572, 18110, 26511, 14880, 5921, 31999dw 2893, 21056, 16574, 147, 25532, 33336, 5251, 64269, 31514, 23670dw 53335, 49581, 57895, 25689, 51697, 58198, 27548, 54151, 41373dw 44382, 23511, 39326, 56955, 51911max dw ?
data ends
已知标号为BUFFER的数组后直接就是标号为MAX的单元,数组中元素的个数由程序计算,不得人工数。
要求在程序中给出足够多的注释。
给定的数据中,最大者为64269(FB0DH)。
参考解答
任务2-成绩统计
下面提供了100名同学AS课成的成绩,请编程序统计其中90~100、60~89、60以下者各有多少人?并把结果连续存放到自RESUT开始的单元中。
data segmentbuf db 85, 72, 79, 90, 79, 54, 63, 66, 83, 79, 71, 77, 77, 65, 89, 93db 69, 96, 72, 98, 60, 78, 69, 68, 80, 65, 91, 64, 90, 90, 64, 90db 99, 55, 84, 56, 80, 54, 55, 66, 53, 54, 83, 61, 52, 92, 66, 51db 95, 81, 51, 100, 70, 65, 50, 74, 91, 57, 95, 66, 54, 50, 73, 59db 78, 80, 92, 78, 89, 78, 99, 100, 82, 92, 59, 71, 74, 81, 93, 74db 98, 57, 57, 96, 76, 79, 57, 67, 52, 84, 87, 54, 67, 72, 59, 75db 64, 89, 77, 80resut db 3 dup(0)
data ends
要求在程序中给出足够多的注释。
参考解答
任务3-保留字符串中的大写字母
在数据区,给定用0作为结束的字符串,请补充完成子程序,只保留字符串中的大写字母,并在最后一个大写字母后记录0作为所有大写字母构成的新字符串的结束。(以下面程序数据区中给出的字符串,最后得到的字符串为YTU后加0)
assume cs:cseg, ds:dseg, ss:sseg
sseg segment stackdw 100h dup (?)
sseg ends
dseg segmentdb 'YanTai University 264005', 0
dseg ends
cseg segment
start: mov ax, dsegmov ds, axmov ax, ssegmov ss, axmov sp, 100hmov bx, 0call getUppermov ax, 4c00hint 21h;子程序名:getUpper
;功 能:对从DS:bx开始,以0结束的字符串,只保留大写字母,并仍以0结束
;入口参数:DS和BX寄存器中保存字符串的起始地址
;出口参数:无
getUpper proc; 在这里写出你的代码ret
getUpper endp
cseg endsend start
参考解答
任务4:冒泡排序(选做)
在数据区,给出了学生人数及汇编语言课程的成绩,请将成绩排序并保存在原数据区。
下面给出部分代码,要求完成排序子程序。
程序中给出的数据段,包括20位同学的成绩,每名同学的数据占1字节。
参考程序段:
assume cs:cseg, ds:dseg, ss:sseg
sseg segment stackdw 100H dup (?)
sseg ends
dseg segmentdb 20db 98,61,57,82,89,73,61,58,53,54db 84,78,70,64,84,63,76,84,83,86
dseg ends
cseg segmentstart: mov ax, dsegmov ds, axmov cl, ds:[0]mov ch, 0 ;cx中存储要排序数的个数mov bx, 1 ;要排序数的起始偏移地址call sortmov ax, 4c00hint 21h
;子程序名:sort
;功 能:对从(DS):(bx)开始的(cx)个字节排序
;入口参数:(DS):(BX)保存数据的起始地址
; (cx)中是要排序的数据个数
;出口参数:无
sort proc;这儿写子程序
sort endpcseg ends
end start
参考解答
这篇关于汇编语言(2016级)实验5 子程序与条件转移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!