《2022年2022年汇编实验子程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编实验子程序设计 .pdf(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验五子程序结构设计一、 实验目的1、加深对子程序的理解,掌握子程序的结构。2、掌握子程序的设计、编写及调试方法。3、掌握宏定义及宏调用的方法。二、 实验内容1、已知在内存数据段中GRADE 开始单元连续存放着10 个学生的成绩,试采用子程序结构编程实现以下功能:(1)找到最高成绩,将其偏移地址存放在内存单元MAX 中。(2)统计不及格的人数,存放在内存单元COUNT 中。(3)计算平均成绩(只取整数部分) ,并在屏幕上显示。要求:将以上功能分别写成子程序,数据区定义如下DSEG SEGMENT GRADE DB 76,68,54,80,45,92,63,58,94,85 MAX DW ? C
2、OUNT DB ? DSEG ENDS 源代码:DATAS SEGMENT GRADE DB76,68,54,80,45,92,63,58,94,85 MAX DW? COUNT DB ? DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS MAIN PROC FAR START: PUSHDS MOVAX,0 PUSH AX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 -
3、 - - - - - - 第 1 页,共 8 页 - - - - - - - - - MOVAX,datas MOVDS,AX CALL MAXGRADE CALL BUJIGE CALL AVGRADE RET MAIN ENDP MAXGRADE PROC FAR push ax push cx push si mov cx,10 mov ax,0 mov si,ax start_loop: mov ax,word ptr gradesi cmp ax,word ptr gradesi+1 jge big mov ax,word ptr gradesi+1 big: inc si loop
4、 start_loop mov max,ax pop si pop cx pop ax ret MAXGRADE ENDP BUJIGE PROC FAR PUSH SI PUSH CX PUSH AX MOV AX,0 MOV COUNT,0 MOV CX,10 LOOP_START2: MOV AX,WORD PTR GRADESI CMP AX,60 JG SMALL2 INC COUNT SMALL2: INC SI LOOP LOOP_START2 POP AX POP CX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - -
5、 - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - POP SI RET BUJIGE ENDP AVGRADE PROC FAR push ds sub ax,ax push ax mov ax,DATAS mov ds,ax mov cx,10 ;循环控制mov bx,0 mov dx,0 ;暂存总成绩avg_grade_1: mov al,gradebx cbw add dx,ax inc bx loop avg_grade_1 mov ax,dx mov bl,10 div bl ;除第一次sub ah,ah ;清零div bl
6、;除第二次push ax add al,30h mov dl,al mov ah,02 int 21h pop ax add ah,30h mov dl,ah mov ah,02 int 21h mov ah,4ch int 21h ret AVGRADE ENDP 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - CODES ENDS END2、编写程序实现十进制数的加减运算。数据段可照如下设置(也可自己定义格式):DATA S
7、EGMENT mes1 db please input the first operand:$ ;请输入第一个数mes2 db please input the second operand:$ ;请输入第二个数mes3 db please input the operator:$ ;请输入操作符mes4 db output the Calculated Results:$ ;输出计算结果DATA ENDS 下面的结果截图仅供参考:(以输入任意非十进制字符作为输入结束)(做减法若结果为负数要输出负号)要求将输出字符串的功能段定义为宏。名师资料总结 - - -精品资料欢迎下载 - - - - -
8、 - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - DATAS SEGMENT x1 dw 0 y1 dw 0 z1 dw 0 mess1 db please input the first operand:$ mess2 db please input the second operand:$ mess3 db pleade input the operaor:$ mess4 db output the Calculated Result:$ ;此处输入数据段代码DATAS ENDS CO
9、DES SEGMENT ASSUME CS:CODES,DS:DATAS main proc far push ds sub ax,ax push ax START: MOV AX,DATAS MOV DS,AX call input ;输出mess1 call crlf call input2 ;输出mess2 call crlf call jiajian ;输出mess3 call crlf call jieguo ;输出mess4 ret main endp multily macro mess local newchar,exit1 lea dx,mess mov ah,09 int
10、21h newchar: mov ah,1 int 21h mov dl,al sub al,30 jl exit1 cmp al,9d jg exit1 cbw xchg ax,bx add bx,ax jmp newchar exit1: 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - ret endm input proc near ;输入mess1 multily mess1 mov x1,bx ret input en
11、dp ;输入mess2 input2 proc far multily mess2 mov y1,bx ret input2 endp defmac macro fuhao,operator fuhao macro x,y,z push ax mov ax,x operator ax,y mov z,ax pop ax endm endm jia proc near ;加法的程序defmac addition,add ret jia endp jian proc near ;减法的定义defmac subtract, sub ret jian endp jiajian proc near;输入
12、符号功能lea dx,mess3 mov ah,09 int 21h mov ah,1 int 21h mov ax,bx cmp al,2bh je add1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - cmp al,2dh je sub1 jmp next add1: call jia ;进行加法addition x1,y1,z1 mov bx,z1 jmp next sub1: call jian ;进行减法subtr
13、act x1,y1,z1 mov bx,z1 mov ax,bx int 21h next: ret jiajian endp ; jieguo proc near lea dx,mess4 mov ah,09 int 21h mov al,bl and al,0fh add al,30h cmp al,3ah jl print add al,7h print: mov dl,al mov ah,2 int 21h ret jieguo endp ;输出结果crlf proc near mov dl,0dh mov ah,2 int 21h mov dl,0ah mov ah,02h int
14、21h ret crlf endp MOV AH,4CH 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - INT 21H CODES ENDS END MAIN 三、 实验报告要求:1、画出程序框图说明程序的基本结构,写出各个模块说明。2、写出调试过程,并分析结果。3、说明子程序与宏的区别。4、名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -