《微机第一次实验作业》由会员分享,可在线阅读,更多相关《微机第一次实验作业(17页珍藏版)》请在金锄头文库上搜索。
1、实验名称 实验 1:显示程序实验 成绩班级 姓名 学号实验目的:1. 掌握在 PC 机上以十六进制形式显示数据的方法;2. 掌握部分 DOS 功能调用使用方法;3. 熟悉汇编语言调试环境和 Turbo Debugger的使用。实验内容:(1) 显示单个字符输出入口: AH=02H 调用参数: DL= 输出字符(2) 显示字符串入口: AH=09H 调用参数: DS:DX= 串地址, $为结束字符(3) 键盘输入并回显入口: AH=01H 返回参数: AL= 输出字符(4) 返回 DOS 系统入口: AH=4CH 调用参数: AL= 返回码程序清单:DATA SEGMENT MES DB Sho
2、w a as hex:, 0AH,0DH,$ SD DB a DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES ; 显示提示信息MOV AH, 09H INT 21H MOV DI, OFFSET SD MOV AL, DS:DI AND AL, 0F0H ; 取高 4位SHR AL,4 CMP AL, 0AH ; 是否是 A 以上的数JB C2 ADD AL, 07H C2: ADD AL, 30H MOV DL, AL ; 显示字符MOV AH,
3、02H INT 21H MOV AL, DS:DI AND AL, 0FH ; 取低 4位CMP AL, 0AH JB C3 ADD AL, 07H C3: ADD AL, 30H MOV DL, AL ; 显示字符MOV AH, 02H INT 21H MOV AX, 4C00H ; 返回 DOS INT 21H CODE ENDS END START实验步骤:1. 运行轻松汇编软件,选择 Edit 菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图 1-1 示;2. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接;3. 使用 Run
4、菜单中的 Run,运行程序,观察运行结果;4. 使用 Run菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。图 1-1 显示程序实验流程图实验结果及分析:收获体会:掌握在 PC 机上以十六进制形式显示数据的方法; 掌握部分 DOS功能调用使用方法;实验名称 实验 2:数据传送实验 成绩班级 82109473274 姓名 82109473274 学号 82109473274 实验目的:1. 熟悉汇编语言调试环境和 Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。实验内容:DDATA S
5、EGMENT ; 定义源数据段MSR DB DIANXIN12-82109473274-ZHANGXUE$ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT ; 定义附加数据段MSD DB LEN DUP(?) EXDA ENDS MYSTACK SEGMENT STACK ; 定义堆栈段DW 20 DUP(?) MYSTACK ENDS CODE SEGMENT ; 定义代码段ASSUME CS:CODE, DS:DDATA, ES:EXDA START: MOV AX, DDATA MOV DS, AX ;装载数据段寄存器MOV AX, EXDA MOV ES,
6、AX ; 装载附加数据段寄存器MOV SI, OFFSET MSR ; 设置 SI MOV DI, OFFSET MSD ; 设置 DI MOV CX, LEN NEXT: MOV AL, SI ; 开始传输数据MOV ES:DI, AL INC SI INC DI DEC CX JNZ NEXT PUSH ES POP DS ;将附加段寄存器的段值赋给数据段寄存器MOV DX, OFFSET MSD MOV AH, 9 INT 21H MOV AX, 4C00H ; 利用 DOS 功能调用返回 DOS 状态INT 21H CODE ENDS END START 将程序主体部分的寄存器间接寻址
7、方式改为相对寻址方式, 则如下所示:MOV BX, 0 MOV CX, LEN NEXT: MOV AL, MSRBX MOV ES:MSDBX, AL INC BX LOOP NEXT实验步骤:1. 运行轻松汇编软件,选择 Edit 菜单编写实验程序;2. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接;3. 使用 Run 菜单中的 Run,运行程序,观察运行结果;4. 使用 Run 菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。实验结果及分析:收获体会:掌握与数
8、据有关的不同寻址方式。实验名称 实验 3:数码转换程序实验 成绩班级 82109473274 姓名 82109473274 学号82109473274 实验目的:掌握不同进制数及编码相互转换的程序设计方法。实验内容:1.十进制转化为十六进制2. 3. 4. 实验步骤:1. 运行轻松汇编软件,选择 Edit 菜单编写实验程序;2. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接;3. 使用 Run 菜单中的 Run,运行程序,观察运行结果;4. 使用 Run 菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;实验结
9、果及分析:收获体会:掌握不同进制数及编码相互转换的程序设计方法。实验名称 实验 4:运算类程序实验 成绩班级 82109473274 姓名 82109473274 学号82109473274 实验目的:1. 掌握运算类指令编程及调试方法;2. 掌握运算类指令对各状态标志位的影响及测试方法。实验内容:1二进制双精度加法运算本 实 验 要 求 计 算 X+Y=Z , 将 结 果 Z 输 出 到 屏 幕 , 其 中X=001565A0H, Y=0021B79EH。实验利用累加器 AX ,先求低十六位和,并存入低址存储单元,后求高 16位和,再存入高址存储单元。由于低位和可能向高位有进位,因而高位字相
10、加语句需用 ADC指令,则低位相加有进位时, CF=1,高位字相加时,同时加上 CF中的 1。在 80386以上微机中可以直接使用 32位寄存器和 32位加法指令完成本实验的功能。2十进制数的 BCD码减法运算本实验要求计算 X-Y=Z , 其中, X、 Y、 Z为 BCD码, 其中 X=0400H,Y=0102H。3乘法运算本实验要求实现十进制数的乘法, 被乘数和乘数均以 BCD 码形式存放于内存中,被乘数为 54320H ,乘数为 3H,运算结束后,将乘积在屏幕上显示。4用减奇数开平方运算80x86指令系统中有乘除法指令但没有开平方指令, 因此, 开平方运算是通过程序来实现的。用减奇数法可
11、求得近似平方根,获得平方根的整数部分。我们知道,N个自然数中的奇数之和等于 N2,即: 1+3+5=9=3 21+3+5+7=16=4 21+3+5+7+9+11+13+15=64=8 2若要做 S的开方运算,那麽就可以从 S中逐次减去自然数中的奇数 1, 3, 5, 7,一直进行到相减数为 0或不够减下一个自然数的奇数为止, 然后统计减去自然数的奇数个数,它就是 S的近似平方根。本实验要求利用减奇法计算 0040H 的开平方值,并将运算结果显示在屏幕上。DATA SEGMENT X DW 65B1H,0315H Y DW 0B69EH,0201H Z DW 2 DUP(?) DATA END
12、S CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,2 CLC MOV SI,0 L1: MOV AX,XSI ADC AX,YSI MOV ZSI,AX INC SI INC SI LOOP L1 MOV BX,Z2 CALL LIST_BX MOV BX,Z CALL LIST_BX MOV AH,4CH INT 21H LIST_BX PROC MOV CH,4 MOV CL,4 NEXT: ROL BX,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39
13、H JLE PRINT ADD DL,7 PRINT: MOV AH,2 INT 21H DEC CH JNZ NEXT RET LIST_BX ENDP CODE ENDS END START 实验步骤:1. 运行轻松汇编软件,选择 Edit 菜单编写实验程序;2. 使用 Compile 菜单中的 Compile 和 Link 对实验程序进行汇编、连接;3. 使用 Run 菜单中的 Run,运行程序,观察运行结果;4. 使用 Run 菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。实验结果及分析:收获体会
14、:掌握运算类指令编程及调试方法;掌握运算类指令对各状态标志位的影响及测试方法。实验名称 实验 5:分支程序设计实验 成绩班级 姓名 82109473274 学号实验目的:1. 掌握分支程序的设计方法。实验内容:程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图 5-1所示。 本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。图 5-1 分支结构示意图实验可以使用 BH, BL 作为暂存现行的最大值和最小值, 且在程序的初始,将 BH 和 BL 初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与 BH, BL进行比
15、较,若取出的字节内容比 BH的内容大或比 BL中的内容小,则修改之。当循环结束操作时,将 BH, BL 分别送屏幕显示。参考实验流程如图 5-2所示。DATA SEGMENT D1 DB 0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H C1 EQU $-D1 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,C1-1 MOV SI,0 MOV BL,D1SI MOV BH,D1SI L1: INC SI MOV AL,D1SI CMP AL,BL JNB L
16、2 MOV BL,AL L2: CMP AL,BH JNA L3 MOV BH,AL L3: LOOP L1 CALL DISP MOV DL,0AH MOV AH,2 INT 21H MOV DL,0DH MOV AH,2 INT 21H MOV BL,BH CALL DISP MOV AH,4CH INT 21H DISP PROC MOV CH,2 MOV CL,4 NEXT: ROL BL,CL MOV DL,BL AND DL,0FH ADD DL,30H CMP DL,39H JLE PRINT ADD DL,7 PRINT: MOV AH,2 INT 21H DEC CH JNZ NEXT RET DISP ENDP CODE ENDS END START 实验步骤:1. 运行轻松汇编软件,选择 Edit 菜单编写实验程序,提