汇编实验子程序设计.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
汇编语言子程序设计 在计算机科学中,子程序是一种重要的编程技术,它可以将复杂的程序分解成小的、独立的模块,以便于编程和维护。汇编语言是低级语言,它可以直接访问和控制计算机的硬件资源,因此在编程时需要考虑硬件的限制和特点。 在本实验中,我们将学习如何设计和实现子程序,掌握子程序的结构、设计、编写和调试方法。同时,我们还将学习宏定义和宏调用的方法。 实验目的 1. 加深对子程序的理解,掌握子程序的结构。 2. 掌握子程序的设计、编写及调试方法。 3. 掌握宏定义及宏调用的方法。 实验内容 子程序结构设计 在实验中,我们将设计和实现三个子程序: MAXGRADE、BUJIGE 和 AVGRADE。 * MAXGRADE 子程序:找到最高成绩,将其偏移地址存放在内存单元 MAX 中。 * BUJIGE 子程序:统计不及格的人数,存放在内存单元 COUNT 中。 * AVGRADE 子程序:计算平均成绩(只取整数部分),并在屏幕上显示。 数据段定义 ```assembly DSEG SEGMENT GRADE DB 76,68,54,80,45,92,63,58,94,85 MAX DW ? COUNT DB ? DSEG ENDS ``` 源代码 ```assembly DATAS SEGMENT GRADE DB 76,68,54,80,45,92,63,58,94,85 MAX DW ? COUNT DB ? DATAS ENDS STACKS SEGMENT ; 此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS MAIN PROC FAR START: PUSH DS MOV AX, 0 PUSH AX MOV AX, DATAS MOV DS, 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 grade[si] cmp ax, word ptr grade[si+1] jge big mov ax, word ptr grade[si+1] big: inc si loop 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 GRADE[SI] CMP AX, 60 JG SMALL2 INC COUNT SMALL2: INC SI LOOP LOOP_START2 POP AX POP CX 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, grade[bx] cbw add dx, ax inc bx loop avg_grade_1 mov ax, dx mov bl, 10 div bl ; 除第一次 sub ah, ah ; 清零 div bl ; 除第二次 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 CODES ENDS END ``` 实验结果 通过实验,我们可以看到子程序的设计和实现过程,并掌握了子程序的结构、设计、编写和调试方法。此外,我们还学习了宏定义和宏调用的方法。 编写程序实现十进制数的加减运算 在本实验中,我们将设计和实现一个十进制数的加减运算程序。该程序将允许用户输入两个十进制数和一个操作符,然后执行加减运算并显示结果。 数据段定义 ```assembly DATA SEGMENT 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 ``` 源代码 ```assembly 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 COD, ``` 实验结果 通过实验,我们可以看到十进制数的加减运算程序的设计和实现过程,并掌握了编写十进制数的加减运算程序的方法。
剩余7页未读,继续阅读
- 粉丝: 3
- 资源: 9万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 1731260448754.jpeg
- 博图 博途1s保护解除DLL Siemens.Automation.AdvancedProtection.dll
- 基于Java和Shell语言的csj_21_08_20_task1设计源码分享
- 基于Typescript和Python的MNIST卷积神经网络模型加载与预测浏览器端设计源码
- 基于Python的RasaTalk语音对话语义分析系统源码
- 基于Vue框架的租车平台前端设计源码
- 基于Java和C/C++的浙江高速反扫优惠券码830主板设计源码
- 基于Java的一站式退休服务项目源码设计
- 基于Java语言实现的鼎鸿餐厅管理系统设计源码
- 基于Java的iText扩展库:简化PDF创建与中文字体应用设计源码