1、微机原理和应用实验报告中国石油大学(华东)现代远程教育实验报告课程名称:微机原理及应用实验名称:循环程序设计实验形式:在线模拟+现场实践提交形式:在线提交实验报告学生姓名: 褚东 学 号:1796414800002 年级专业层次:17电气自动化技术 高起专 学习中心: 山东枣庄函授站(新) 提交时间: 2018 年 7月 10 日一、实验目的1掌握单重循环及多重循环的程序设计方法;2学会针对不同的问题,选用不同的组织循环的方法;3进一步熟悉利用DEBUG程序、CODEVIEW调试程序的方法,并检查和验证结果的正确性。二 、实验内容1. 已知字数组定义如下:ARRAY DW 12,78,55,4
2、,125,96 MAX DW ? 编制程序求出该ARRAY数组中的最大数放入MAX单元。data segment array dw 12,78,55,4,125,96 max dw ?data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov si,0 mov ax,arraysi mov cx,5again: add si,2 dec cx jcxz exit cmp ax,arraysi ja again mov ax,arraysi jmp againexit: mov max,ax mov a
3、h,02h int 21h mov ah,4ch int 21hcode ends end start 2. 预留字符串口令,输入口令串与预留密码串比较。若匹配则显示“MATCH!CONGRATULATION”,否则显示“NOMATCH!”,并让用户重新输入,程序能对口令进行测试,但测试次数最多3次,若3次输入密码皆错,给出相应的提示信息,程序退出。data segment password db 123456 input db 20,?,20 dup(?) count equ 6 str1 db 0dh,0ah,match!congratulation$ str2 db 0dh,0ah,no
4、 match!please input again:$ str3 db 0dh,0ah,please intout you password:$ str4 db 0dh,0ah,wrong 3 times,program will be over$data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov di,3begin: dec di lea dx,str3 mov ah,09h int 21h lea dx,input mov ah,0ah int 21h mov si,0 mov al,in
5、putsi+1 cmp al,count jnz output1 mov si,0 mov cx,countagain: mov al,passwordsi mov bl,inputsi+2 cmp al,bl jnz output1 inc si loop again jmp output2output1: lea dx,str2 mov ah,09 int 21h cmp di,0 jnz begin jmp aaoutput2: lea dx,str1 mov ah,09 int 21h jmp exitaa: lea dx,str4 mov ah,09 int 21h mov ax,9
6、999ha: mov cx,9999hb: loop b dec ax jnz a exit: mov ah,4ch int 21hcode ends end start 3.有一个首地址为NUM的N字无序无符号整数数组,编制程序采用选择排序法使该数组中的数按照从小到大的次序排序输出。data segment array dw 22,31,10,5,1,66,136,99data endscode segmentmain proc far assume cs:code,ds:datastart: mov ax,data mov ds,ax mov di,0again: mov si,dinex
7、t: mov ax,arraydi add si,2 cmp si,16 ja exit cmp ax,arraysi jbe next xchg ax,arraysi mov arraydi,ax jmp nextexit: add di,2 cmp di,16 jb again call output mov ah,4ch int 21hmain endpoutput proc near push ax push bx push cx push dx mov di,0s0: mov ax,arraybx mov cx,sps1: mov dx,0 mov di,10 div di push
8、 dx cmp ax,0 ja s1s2: pop ax add ax,30h mov dl,al mov ah,02h int 21h cmp sp,cx jb s2 add bx,2 mov dx, mov ah,02h int 21h cmp bx,15 jbe s0 pop dx pop cx pop bx pop ax retoutput endpcode ends end start 4.设有一段英文,其字符变量名为ENG,并以$字符结束。试编写一程序,统计其中单词的个数,并查出单词SUN在该文中的出现次数,并以格式“SUN:”显示出次数。sta segment stack dw
9、40h dup(?) top label word sta endsdatarea segment ENG db I ALWAYS WATCH THE NBA GAMES .ESPECIALLY I SUPPORT FOR THE SUN TEAM$ total dw ? num db SUN:$ datarea ends code segment assume ds:datarea,ss:sta,cs:code main proc far mov ax,sta mov ss,ax lea sp,top mov ax,datarea mov ds,ax xor bx,bx xor ax,ax
10、mov si,0 l0: mov al,ENGsi cmp al,$ je exit cmp al,S jne goback inc si mov al,ENGsi cmp al,U jne goback inc si mov al,ENGsi cmp al,N jne goback inc bx inc si jmp l0 goback: inc si jmp l0 exit: mov total,bx mov ah,09h lea cx,num mov dx,cx int 21h mov cx,4 mov bx,total l11:push cx mov cl,4 rol bx,cl pu
11、sh bx mov al,bl and al,0fh cmp al,0 jb l10 cmp al,9 jna right add al,7 right: add al,30h mov dl,al mov ah,2 int 21h pop bx pop cx loop l11 l10: mov ah,4ch int 21h main endp code ends end main三、 预习要求1掌握单重循环及多重循环的程序设计方法;2学会针对不同的问题,选用不同的组织循环的方法;3进一步熟悉利用DEBUG程序、CODEVIEW调试程序的方法,并检查和验证结果的正确性。四、编写完整的程序代码五、思考题1根据实验要求写出运行后正确无误的MASM、LINK和DEBUG命令格式。2写出程序的数据段、代码段的位置和大小
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1