




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
合肥工业大学合肥工业大学 计算机与信息学院计算机与信息学院 实验报告实验报告 课课 程 汇编语言程序设计程 汇编语言程序设计 专业班级 计算机科学与技术专业班级 计算机科学与技术 13 1 班班 学学 号 梁壮壮号 梁壮壮 姓姓 名 名 2013211622 实验一实验一 Debug 程序的使用程序的使用 一一 实验目的实验目的 1 熟悉 DEBUG 程序中的命令 学会在 DEBUG 下调试运行汇编语言源程序 2 掌握 8086 8088 的寻址方式及多字节数据的处理方法 二二 实验内容实验内容 1 利用 DEBUG 程序中的 E 命令 将两个多字节数 003F1AE7H 和 006BE5C4H 分别送入起始地址为 DS 0200H 和 DS 0204H 两个单元中 2 分别用直接寻址方式和寄存器间接寻址方式编写程序段 实现将 DS 0200H 单元和 DS 0204H 单元中的数据相加 并将运算结果存放在 DS 0208H 单元中 要求 本次实验的内容均在 DEBUG 下完成 实现数据的装入 修改 显示 汇 编语言程序段的编辑 汇编和反汇编 程序的运行和结果检查 三三 实验过程和程序实验过程和程序 1 启动 DOS 操作系统 2 运行 DEBUG COM 程序 若当前盘为 C C DEBUG 为 DEBUG 提示符 仅当屏幕出现该提示符后 才可输入 DEBUG 命令 4 用 A 命令编辑和汇编源程序 A 186E 0100 MOV AX 0200 186E 0103 MOV BX 0202 186E 0107 ADD AX 0204 186E 010B ADC BX 0206 186E 010F MOV 0208 AX 186E 0112 MOV 020A BX 186E 0116 5 用 U 命令反汇编验证源程序 U CS 0100 186E 0100 A10002 MOV AX 0200 186E 0103 8B1E0202 MOV BX 0202 186E 0107 03060402 ADD AX 0204 186E 010B 131E0602 ADC BX 0206 186E 010F A30802 MOV 0208 AX 186E 0112 891E0A02 MOV 020A BX 186E 0116 6 程序未执行前 用 R 命令观察 相关寄存器的内容 R 如 AX BX SI DI CS IP 7 在程序未执行前 用 D 命令观察 DS 0200H DS 0204H DS 0208H 单元的内 容 D 200 20B 8 用 G 命令运行源程序 G 100 0116 9 再用 D 命令观察 DS 0200H DS 020BH 字节单元中的内容 D 200 20B 10 用 T 单步操作命令对源程序单步执行 观察 AX BX CS IP 寄存器内容的 变化 并与预计的结果相比较 四四 实验结果 包括必要的截图 实验结果 包括必要的截图 五五 实验体会实验体会 这次的实验让我学会了这次的实验让我学会了 DEBUG 的运用 了解到了的运用 了解到了 DEBUG 对于程序的调对于程序的调 试功能 试功能 实验二实验二 汇编语言程序设计汇编语言程序设计 顺序 循环顺序 循环 一一 实验目的实验目的 1 掌握顺序和循环程序结构和设计方法 2 熟悉在 PC 机上建立 汇编 连接 调试和运行 8086 8088 汇编语言程序的过程 二二 实验内容实验内容 1 X Y Z V 均为字变量 在 X Y Z V 字单元中存放是 16 位带符号 数 试编写汇编语言程序完成以下功能 计算表达式值 V X Y Z 720 X 将上述表达式运算结果整数放在 SUM1 单元 余数放在 SUM2 单元 2 求一个班 50 名学生成绩的平均值 附加题 最大值和最小值 并将结果显 示出来 3 从键盘读入一个字符串 以 Enter 结束 字符串不超过 50 个字符 并打 印该字符串 附加题 查找中间是否有 asm 子串 如果有 输出 Yes 否 则 输出 No 三三 实验过程和程序实验过程和程序 程序 1 Data segment X dw 1 Y dw 720 Z dw 1 V dw 1 Sum1 dw Sum2 dw Data ends Code segment Assume cs code ds data Start mov ax data Mov ds ax Mov ax x x y Mov bx y Imul bx Mov cx ax x y z Mov bx dx Mov ax z Cwd Add cx ax Adc bx dx Sub cx 720 x y z 720 Sbb bx 0 Mov ax v v x y z 720 Cwd Sub ax cx Sbb dx bx Mov bx x v x y z 720 x Idiv bx Mov sum1 ax sum1 存商 sum2 存余数 Mov sum2 dx mov bx sum1 mov ch 4 mov cl 4 again rol bx cl mov dl bl and dl 0fh cmp dl 0ah jl next add dl 37h A F jmp down next add dl 30h 0 9 down mov ah 2 int 21h dec ch jnz again mov dl 23h mov ah 2 int 21h mov bx sum2 mov ch 4 mov cl 4 again1 rol bx cl mov dl bl and dl 0fh cmp dl 0ah jl next1 add dl 37h A F jmp down1 next1 add dl 30h 0 9 down1 mov ah 2 int 21h dec ch jnz again1 Mov ax 4c00h Int 21h Code ends End start 2 data segment grade db 61 73 82 90 100 45 dup 70 avg1 db 平均值的商 avg2 db 平均值的余数 max db 最大值 min db 最小值 data ends code segment assume cs code ds data start mov ax data mov ds ax mov si 0 mov bx 0 mov cx 50 mov ax 0 l1 mov al grade si cbw add bx ax inc si loop l1 mov ax bx mov bl 50 div bl mov avg1 al mov avg2 ah mov si 0 找最大值 mov cx 50 mov al grade 0 again0 cmp al grade si ja next0 mov al grade si next0 inc si loop again0 mov max al mov si 0 找最小值 mov cx 50 mov al grade 0 again1 cmp al grade si jna next1 mov al grade si next1 inc si loop again1 mov min al mov bl avg1 平均值的商 call sub mov dl 23h 分开不同数据 mov ah 2 int 21h mov bl avg2 平均值的余数 call sub mov dl 23h 分开不同数据 mov ah 2 int 21h mov bl max 最大值 call sub mov dl 23h 分开不同数据 mov ah 2 int 21h mov bl min 最小值 call sub mov ax 4c00h int 21h sub proc mov ch 2 mov cl 4 again2 rol bl cl mov al bl and al 0fh cmp al 0ah jl next2 add al 37h A F jmp down1 next2 add al 30h 0 9 down1 mov dl al mov ah 2 int 21h dec ch jnz again2 ret sub endp code ends end start 3 data segment buf db 50 定义缓冲区 db 40 db 40 dup 0 crlf db 0dh 0ah 回车换行 data ends stack segment stack db 100 dup 0 stack ends code segment assume ds data ss stack cs code start mov ax data mov ds ax lea dx buf 输入字符串 mov ah 10 int 21h lea dx crlf 输出换行 mov ah 9 int 21h mov bl buf 1 mov bh 0 计算字符串实际字符个数 mov byte ptr buf 2 bx 在串尾补入 lea dx buf 2 mov ah 9 输出字符串 int 21h mov ah 4ch int 21h code ends end start 四四 实验结果 包括必要的截图 实验结果 包括必要的截图 第 1 题截图 第 2 题截图 第 3 题截图 五五 实实 验体会验体会 在这一次的实验中用到在这一次的实验中用到 CBW 和和 CWD 命令来扩展符号位 解决处理数据的命令来扩展符号位 解决处理数据的 时候数据类型不匹配的问题 同时也学到了从键盘上读取字符以及打印字符的时候数据类型不匹配的问题 同时也学到了从键盘上读取字符以及打印字符的 方法 方法 实验三实验三 汇编语言子程序设计汇编语言子程序设计 分支 子程序分支 子程序 一一 实验目的实验目的 1 掌握分支和子程序结构和设计方法 2 熟悉在 PC 机上建立 汇编 连接 调试和运行 8086 8088 汇编语言程序的过程 3 通过汇编语言了解高级语言的参数传递等知识 二二 实验内容实验内容 1 1 BL 中的只有一位为 1 编写程序测试 并输出提示信息 The X Bit is 1 要求 地址表和转移表 2 编写一个子程序计算 z f x y x y x y x y z 有符号数内存数 要求通过 堆栈 寄存器 内存 传送所有参数 3 实践 C Asm 的转换过程 三三 实验过程和程序实验过程和程序 程序 1 Data segment S1 DB The 1 Bit is 1 S2 DB The 2 Bit is 1 S3 DB The 3 Bit is 1 S4 DB The 4 Bit is 1 S5 DB The 5 Bit is 1 S6 DB The 6 Bit is 1 S7 DB The 7 Bit is 1 S8 DB The 8 Bit is 1 Data ends code segment assume cs code ds data start mov ax data mov ds ax mov dx 0 输入 BL MOV BL 00001000B MOV AL BL 循环开始 MOV CX 8 GOGO SHL AL 1 跳转 JC EXIT add dx 3 LOOP GOGO EXIT MOV AH 9 LEA SI JMPTABLE ADD SI DX JMP SI JMPTABLE JMP NEAR PTR L1 JMP NEAR PTR L2 JMP NEAR PTR L3 JMP NEAR PTR L4 JMP NEAR PTR L5 JMP NEAR PTR L6 JMP NEAR PTR L7 JMP NEAR PTR L8 L1 LEA DX S1 JMP DONE L2 LEA DX S2 JMP DONE L3 LEA DX S3 JMP DONE L4 LEA DX S4 JMP DONE L5 LEA DX S5 JMP DONE L6 LEA DX S6 JMP DONE L7 LEA DX S7 JMP DONE L8 LEA DX S8 DONE INT 21H mov ah 4ch int 21h code ends end start 2 堆栈传递 Stack segment dw 512 dup Stack ends Data segment x dw 4 y dw 4 z dw Data ends Code segment assume cs code ds data ss stack start mov ax data mov ds ax sub sp 2 mov ax x push ax mov ax y push ax call P1 pop z mov ax z mov bx ax mov dx 0 mov ch 4 mov cl 4 again rol bx cl mov al bl and al 0fh cmp al 0ah jl next add al 37h jmp down next add al 30h down mov dl al mov ah 2 int 21h dec ch jnz again mov ah 4ch int 21h P1 proc near push bp mov bp sp push ax push bx push cx push dx mov ax 6 bp x 的值 mov bx 4 bp y 的值 imul bx x y mov cx dx x y x mov bx ax mov ax 6 bp cwd add bx ax adc cx dx mov ax 4 bp x y x y cwd sub bx ax sbb cx dx mov 8 bp bx pop dx pop cx pop bx pop ax pop bp ret 4 P1 endp Code ends end start 寄存器传递 Stack segment dw 512 dup Stack ends Data segment x dw 4 y dw 4 z dw Data ends Code segment assume cs code ds data ss stack start mov ax data mov ds ax mov ax x mov bx y call P1 mov z bx bx 做出口参数 mov bx z 方便查看输出是否正确 mov dx 0 mov ch 4 mov cl 4 again rol bx cl mov al bl and al 0fh cmp al 0ah jl next add al 37h jmp down next add al 30h down mov dl al mov ah 2 int 21h dec ch jnz again mov ah 4ch int 21h P1 proc near push ax push cx imul bx mov cx dx mov bx ax mov ax x cwd add bx ax adc cx dx mov ax y cwd sub bx ax sbb cx dx pop cx pop ax ret P1 endp Code ends end start 四四 实验结果 包括必要的截图 实验结果 包括必要的截图 第 1 题截图 第 2 题堆栈截图 第 2 题寄存器截图 五五 实验体会实验体会 在这一次的实验当中 我学到了地址表以及转移表的应用 同时也学到了子程在这一次的实验当中 我学到了地址表以及转移表的应用 同时也学到了子程 序的使用 序的使用 实验四实验四 汇编语言高级编程专题汇编语言高级编程专题 一一 实验目的实验目的 1 汇编语言宏程序设计 2 掌握中断服务子程序的编写 3 汇编语言与高级语言的混编 二二 实验内容实验内容 1 编写一个宏 求三个数的最小数 原型为 MIN3 x y z min 2 挂接 1CH 中断 正计时 60 秒后退出 要求屏幕显示 0 59 的秒数 3 VC 中编写内联汇编 将字节数组的每个元素高低四位互换 char dbyte 0 x34 0 x45 0 x56 0 x67 0 xaf 三三 实验过程和程序实验过程和程序 1 MIN3 macro x y z min mov ax x cmp ax y jl next0 mov ax y next0 cmp ax z jl down0 mov ax z down0 mov min ax endm data segment x dw 13 y dw 15 z dw 16 min dw data ends code segment assume cs code ds data start mov ax data mov ds ax MIN3 x y z min mov bx min mov ch 4 mov cl 4 again rol bx cl mov al bl and al 0fh cmp al 0ah jl next add al 37h A F jmp down next add al 30h 0 9 down mov dl al mov ah 2 int 21h dec ch jnz again mov ah 4ch int 21h code ends end start 2 汇编 挂接 1CH 中断 正计时 60 秒后退出 DATA SEGMENT OLDISR DW TIMER DB 100 COUNTER DW 0 ISDONE DB 0 DATA ENDS CODE SEGMENT ASSUME CS CODE DS DATA START MOV AX DATA MOV DS AX MOV AX 0 MOV ES AX CLI MOV AX ES 1CH 4 保存原中断向量 MOV OLDISR 0 AX MOV AX ES 1CH 4 2 MOV OLDISR 2 AX MOV WORD PTR ES 1CH 4 OFFSET ISR 设置新中断向量 MOV WORD PTR ES 1CH 4 2 SEG ISR STI DELAY CMP ISDONE 1 JNZ DELAY CLI MOV AX OLDISR 0 恢复原中断向量 MOV ES 1CH 4 AX MOV AX OLDISR 2 MOV ES 1CH 4 2 AX STI MOV AH 4CH INT 21H ISR PROC FAR PUSH DX PUSH AX M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心理学应用心理学练习题
- 工程经济考试各科目的学习策略试题及答案
- 绿色农业种植标准化管理体系构建方案
- 现代日式风格软装设计
- 生物化学分子基础考题汇编
- 2025市政工程考试精彩试题及答案
- 行政管理经济法在现实中的作用试题及答案
- 人口经济学与政策研究试题及答案
- 相声课件的教学课件
- 提高产品质量的管理策略计划
- 体育教育中的跨学科整合教学研究论文
- 高危药物外渗处理流程
- 超星尔雅学习通《创新创业(同济大学)》2025章节测试附答案
- 医院无线网络方案
- 水库安全运行管理防汛知识培训
- 基于高光谱成像的青稞品种鉴别和特征品质无损检测技术研究
- 2024年山东省政府采购评审专家考试真题100个题及答案
- 2025年合肥市公安局第一批招考聘用警务辅助人员591人高频重点提升(共500题)附带答案详解
- 医院培训课件:《医务人员职业暴露及安全防护》
- 煤质化验工职业技能竞赛理论考试题及答案
- DB52T 1512-2020 水利水电工程隧洞施工超前地质预报技术规程
评论
0/150
提交评论