汇编实验报告(1).doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
实验三 算术运算与代码转换程序设计 一、实验目的 1)掌握算术运算程序的设计方法。 2)掌握代码转换程序的设计方法。 3)进一步掌握各种程序结构。 4)熟练掌握和使用用DEBUG调试程序。 二、实验内容 1)编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。 2)编制程序实现二进制定点数与十进制数的ASCII码串之间转换,并将结果显示在屏 幕上。 3)编写程序计算从键盘输入两个不超过四位的十进制数的和、差、积、商,并以十 进制形式输出。 4)写程序把从键盘输入的四位十六进制数转换为压缩的BCD码,并显示输出。 5)编写一通用过程用来将十进制数(从键盘输入)转换为P(从键盘输入)进制数。 三、实验设备 PC机一台 四、实验步骤 1) 按程序流程图编制实验程序。 2) 输入源程序。 3) 汇编、连接程序,执行程序,检查结果。 4) 程序的执行可用DEBUG的G命令,也可用T命令单步跟踪执行。 5) 用D命令检查执行结果。 六、源程序 实验一 DATA SEGMENT NUM1 DB 22H,33H,44H,55H,66H,77H NUM1L DB 6H NUM2 DB 22H,22H,22H,22H NUM2L DB 4H OUTCOME1 DB 10H DUP(0) OUTCOME2 DB 10H DUP(0) N DB 0H DATA ENDS STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CH,0 MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1L MOV AL,NUM2L CMP AH,AL JAE CHA XCHG SI,DI XCHG AH,AL CHA:SUB AH,AL MOV CL,AL CLC MOV BX,OFFSET OUTCOME1 LOP1:MOV AL,[DI] PUSH CX MOV CL,[SI] ADC CL,AL MOV [BX],CL INC BX INC SI INC DI POP CX LOOP LOP1 MOV CL,AH JCXZ LOP3 LOP2:PUSH CX MOV CL, BYTE PTR [SI] ADC CL,0 MOV [BX],CL POP CX INC BX INC SI LOOP LOP2 LOP3:MOV CH,0 MOV SI,OFFSET NUM1 MOV DI,OFFSET NUM2 MOV AH,NUM1L MOV AL,NUM2L CMP AH,AL JAE CHA1 XCHG SI,DI XCHG AH,AL CHA1:SUB AH,AL MOV CL,AL CLC MOV BX,OFFSET OUTCOME2 LOP11:MOV AL,[DI] PUSH CX MOV CL,[SI] SBB CL,AL MOV [BX],CL INC BX INC SI INC DI POP CX LOOP LOP11 MOV CL,AH JCXZ LOP7 LOP21:PUSH CX MOV CL, BYTE PTR [SI] SBB CL,0 MOV [BX],CL POP CX INC BX INC SI LOOP LOP21 LOP7:MOV DI,OFFSET OUTCOME1 ADD DI,10H MOV CX,11H LOP4: MOV DL,[DI] DEC DI CMP N,0H JNE LOP5 CMP DL,0H JE LOP9 LOP5:PUSH DX PUSH CX MOV CL,4H SHR DL,CL POP CX CMP DL,9H JBE LOP6 ADD DL,7H LOP6:ADD DL,30H MOV AH,2 INT 21H MOV N,1H POP DX AND DX,0FH CMP DL,9H JBE LOP8 ADD DL,7H LOP8:ADD DL,30H MOV AH,2 INT 21H MOV DL,'H' MOV AH,2 INT 21H LOP9:LOOP LOP4 MOV N,0 MOV DI,OFFSET OUTCOME2 ADD DI,10H MOV CX,11H LOP14: MOV DL,[DI] DEC DI CMP N,0H JNE LOP15 CMP DL,0H JE LOP19 LOP15:PUSH DX PUSH CX MOV CL,4H SHR DL,CL POP CX CMP DL,9H JBE LO 实验报告“汇编实验报告(1)”主要涵盖了汇编语言编程中的算术运算和代码转换程序设计,旨在提升实验者对这些基本概念的理解和实践能力。以下是对实验内容的详细说明: 1. **算术运算程序设计**: 实验要求编写两个多字节整数的加法和减法程序。在汇编语言中,这通常涉及到逐位运算,特别是对于大数运算,可能需要处理进位或借位。例如,程序中使用了`SUB`指令进行减法运算,`ADC`指令进行带进位的加法运算,以及`SBB`指令进行带借位的减法运算。通过`JAE`(无符号大于等于)和`JCXZ`(CX寄存器为零时跳转)等条件判断指令来控制循环的执行。 2. **代码转换程序设计**: 实验中包含了二进制定点数与十进制ASCII码串之间的转换。这需要理解ASCII码表,以及如何将数字转换为其对应的字符表示。在汇编语言中,通常通过位移和比较操作完成这个转换。例如,程序中使用`SHR`指令右移二进制位并使用`ADD`指令将ASCII码转换为可打印字符。 3. **程序结构**: 实验中涉及了多种程序结构,如循环(`LOOP`指令)、条件分支(`JMP`、`JNE`等)、以及子程序调用(虽然实验未明确提到,但在实际编程中,通用的过程转换通常会用到)。此外,还用到了数据段(`DATA SEGMENT`)、堆栈段(`STACK1 SEGMENT`)和代码段(`CODE SEGMENT`)的声明,以及`ASSUME`指令来指定段寄存器的关联。 4. **DEBUG调试程序**: 学习使用DEBUG工具是汇编语言编程的重要环节。`DEBUG`提供了`G`命令来执行整个程序,`T`命令用于单步调试,而`D`命令则用于查看内存中的数据,这些都是调试程序的关键操作。 5. **程序执行步骤**: 实验步骤包括按照流程图编写程序,输入源代码,然后通过汇编、链接来生成可执行文件,最后执行程序并用DEBUG进行检查和调试。这需要理解汇编语言的编译和链接过程,以及DEBUG工具的使用方法。 源程序展示了如何实现上述功能。例如,`NUM1`和`NUM2`存储了要进行运算的数字,`OUTCOME1`和`OUTCOME2`存储结果,`LOP1`和`LOP2`等循环结构实现了加减运算,`LOP4`和`LOP14`则用于将计算结果转化为十六进制字符串并输出。 这个实验涵盖了汇编语言编程的基础,包括基本的算术运算、逻辑控制、数据转换以及调试技术,是学习汇编语言不可或缺的部分。通过这样的实践,实验者可以深入理解计算机底层的运作机制,提高程序设计的能力。
剩余20页未读,继续阅读
- 粉丝: 193
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助