2020年燕山大学汇编语言实验答案(供参考)

合集下载

汇编语言试题及答案

汇编语言试题及答案

汇编语言试题及答案一、单项选择题(每题2分,共20分)1. 汇编语言是一种()。

A. 高级语言B. 低级语言C. 机器语言D. 符号语言答案:D2. 汇编语言程序必须经过()才能被计算机执行。

A. 编译B. 汇编C. 链接D. 解释答案:B3. 在汇编语言中,指令通常由()组成。

A. 操作码和操作数B. 操作码和地址码C. 操作码和数据D. 地址码和数据答案:A4. 汇编语言中的寄存器主要用于()。

A. 存储数据B. 存储指令C. 存储地址D. 存储控制信息答案:A5. 汇编语言中的立即寻址方式是指()。

A. 操作数在寄存器中B. 操作数在内存中C. 操作数在指令中D. 操作数在输入/输出端口中答案:C6. 在汇编语言中,指令“MOV AX, 1234H”的作用是()。

A. 将内存地址1234H的内容移动到AX寄存器B. 将立即数1234H移动到AX寄存器C. 将AX寄存器的内容移动到内存地址1234HD. 将AX寄存器的内容移动到另一个寄存器答案:B7. 汇编语言中的循环结构通常使用()指令实现。

A. JZB. JNZC. LOOPD. CALL答案:C8. 在汇编语言中,子程序调用通常使用()指令。

A. JZB. JNZC. CALLD. RET答案:C9. 汇编语言中的堆栈操作通常使用()指令。

A. PUSHB. POPC. MOVD. ADD答案:A10. 在汇编语言中,中断服务程序的结束通常使用()指令。

A. INTB. IRETC. RETD. CALL答案:B二、填空题(每题2分,共20分)1. 汇编语言中的指令通常由______和______两部分组成。

答案:操作码;操作数2. 汇编语言中的寄存器可以分为______、______和______三类。

答案:通用寄存器;段寄存器;控制寄存器3. 汇编语言中的寻址方式包括______、______、______和______等。

答案:立即寻址;直接寻址;间接寻址;寄存器寻址4. 在汇编语言中,指令“MOV AX, BX”的作用是将BX寄存器的内容______到AX寄存器。

汇编语言试题及参考答案

汇编语言试题及参考答案

汇编语言试题及参考答案一、选择题(每题2分,共20分)1. 汇编语言中的指令通常由哪两部分组成?A. 操作码和操作数B. 地址和数据C. 指令和数据D. 操作码和地址答案:A2. 以下哪个不是汇编语言中的寻址方式?A. 直接寻址B. 间接寻址C. 立即寻址D. 寄存器寻址答案:B3. 在汇编语言中,以下哪个指令用于将数据从内存加载到寄存器中?A. MOVB. CMPC. ADDD. SUB答案:A4. 汇编语言中,以下哪个指令用于比较两个寄存器的内容?A. MOVB. CMPC. ADDD. SUB答案:B5. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与立即数相加?A. MOVB. CMPC. ADDD. SUB答案:C6. 汇编语言中的条件跳转指令通常使用哪些条件?A. 零、非零B. 正、负C. 溢出、非溢出D. 所有上述条件答案:D7. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与另一个寄存器的内容相减?A. MOVB. CMPC. ADDD. SUB答案:D8. 汇编语言中的循环结构通常使用哪种类型的跳转指令?A. 无条件跳转B. 条件跳转C. 直接跳转D. 间接跳转答案:B9. 在汇编语言中,以下哪个指令用于将一个寄存器的内容与内存中的内容相加?A. MOVB. CMPC. ADDD. SUB答案:C10. 汇编语言中,以下哪个指令用于将一个寄存器的内容与另一个寄存器的内容进行逻辑与操作?A. ANDB. ORC. NOTD. XOR答案:A二、填空题(每题2分,共20分)1. 在汇编语言中,指令MOV AX, BX的作用是将寄存器________的内容复制到寄存器________中。

答案:BX,AX2. 汇编语言中的指令JMP FAR PTR 100H:200H的作用是跳转到内存地址________。

答案:100H:200H3. 汇编语言中,指令CALL的作用是________。

汇编语言答案

汇编语言答案

汇编语言答案:从计算机底层认识计算机汇编语言是一种基于机器指令集的程序设计语言,是一种低级语言。

与其他高级语言(例如C语言、Python等)相比,汇编语言更加接近计算机底层,可以更加直接地操作计算机的硬件。

本文将从汇编语言的基本概念、应用领域、学习方法等方面进行讨论。

一、汇编语言的基本概念汇编语言是机器语言的助手,它将机器语言进行了符号化表示。

我们知道机器语言是由二进制代码表示的,而汇编语言则使用助记符来代替这些二进制代码。

这样做的好处是使得程序变得易读易懂、易维护。

在编写程序时,我们将程序用汇编语言描述,通过汇编器编译成机器语言,然后由计算机直接执行。

由于汇编语言使用底层指令集,因此可以更加直接地控制计算机硬件,从而实现特定的功能。

二、汇编语言的应用领域汇编语言的应用领域非常广泛,主要分为以下几个方面:1. 操作系统开发操作系统是计算机系统的核心,而操作系统的开发离不开对硬件的直接控制。

因此,很多操作系统的核心部分都是用汇编语言编写的。

2. 嵌入式系统开发嵌入式系统是指集成了计算机功能的其他电子设备,例如手机、汽车、家电等。

嵌入式系统的要求非常高,因为它们通常需要高效、稳定地运行。

因此,用汇编语言编写的程序通常具有更好的性能和稳定性。

3. 游戏开发游戏是计算机应用领域的重要分支,而游戏的开发涉及到大量的图形和音频处理,因此需要高效的程序运行环境。

在游戏开发过程中,汇编语言通常用于优化游戏性能。

4. 加密与反编译加密和反编译是安全领域的重要组成部分,而在这个领域中,汇编语言也是不可或缺的。

在进行软件加密和反编译时,汇编语言可以帮助我们分析和修改程序的机器语言。

三、汇编语言的学习方法汇编语言相对于其他编程语言来说,更加底层,难度也较大,但是汇编语言的学习会使你对计算机原理和底层结构有更深层次的认识。

以下是几个学习汇编语言的方法:1. 学习计算机系统组成原理汇编语言的运行需要计算机硬件的支持,因此在学习汇编语言前,需要对计算机系统组成原理有一定的了解。

汇编语言 实验3 串操作 (含答案)

汇编语言 实验3  串操作   (含答案)

实验一串操作一、实验预习要求1、复习8086指令系统中的串操作指令。

2、复习汇编程序的建立、连接、执行和调试的全过程。

3、根据本实验的编程提示及题目要求编写试验中的程序段。

二、编程提示1、定义逻辑段时,所定义的数据段或附加段的缓冲区大小及缓冲区起始地址应与实际的操作需要一致。

;例如定义如下附加段:<附加段名> SEGMENT ;定义附加段ORG 1000H ;定义缓冲区从该逻辑地址为1000H处开始BUFFER DB 10H DUP(?) ;定义缓冲区大小为10H个字节单元<附加段名> ENDS2、任何程序都需要定于代码段。

在代码段中需要初始化所定义的除代码段寄存器之外其他段寄存器,程序代码的最后需要有正常返回DOS的指令。

如下:<代码段名> SEGMENTASSUME CS :<代码段名> ,DS:<数据段名>,ES:<附加段名>START: MOV AX , <数据段名>MOV DS, AXMOV AX, <附加段名>MOV ES,AX【串操作程序代码】MOV AH,4CHINT 21H<代码段名> ENDS三、实验内容1、在代码段中输入以下程序段并运行之,回答问题。

CLDMOV DI,1000HMOV AX,55AAHMOV CX,10HREP STOSW上述程序生成EXE文件,执行后:(1)从ES:1000H开始的16个字单元的内容是什么?(1)DI=?,CX=?解释原因。

DI=1020H CX=0000H REP的功能是重复执行操作至CX=0,而STOSW是每次执行指令都是(DI)←(DI)+2DI=2020 CX=0000 REP的功能是重复执行操作至cx=0,而stosw是每次执行指令都是(DI)<-(DI)+22、在上题的基础上,在代码段中再输入以下程序段并运行,回答下面的问题:MOV SI,1000HMOV DI,2000HMOV CX,20HREP MOVSB程序执行后:(1)从ES:2000H开始的16个字单元的内容是什么?(2)SI=?,DI=?,CX=?分析原因。

汇编语言程序设计教案及习题答案

汇编语言程序设计教案及习题答案

汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介1. 汇编语言的概念2. 汇编语言的特点3. 汇编语言的应用领域二、汇编语言的基本语法1. 数据类型及表示2. 指令格式及分类3. 寄存器使用规则三、汇编语言程序设计步骤1. 分析需求,确定程序功能2. 选择合适的汇编语言及开发环境3. 编写汇编代码,调试程序4. 优化程序性能四、常用汇编指令及功能1. 数据传输指令2. 算术运算指令3. 逻辑运算指令4. 控制流指令5. 字符串操作指令6. 中断指令五、汇编语言与C语言的接口编程1. extern声明汇编函数2. 调用汇编函数的方法3. 汇编函数与C函数的数据交换4. 实例分析:汇编语言实现字符串排序习题答案:一、汇编语言简介1. 汇编语言是一种低级编程语言,用于编写计算机程序。

(正确)2. 汇编语言可以直接操作计算机硬件资源。

(正确)3. 汇编语言程序可读性差,不易维护。

(正确)二、汇编语言的基本语法1. 数据类型及表示a. 字节:8位(正确)b. 字:16位(正确)c. 双字:32位(正确)d. 四字:64位(正确)2. 指令格式及分类a. 操作码(正确)b. 操作数(正确)c. 寄存器(正确)d. 标志位(正确)3. 寄存器使用规则a. 通用寄存器:AX, BX, CX, DX(正确)b. 段寄存器:CS, DS, ES, SS(正确)c. 指令指针:IP(正确)d. 状态寄存器:FLAGS(正确)三、汇编语言程序设计步骤1. 分析需求,确定程序功能(正确)2. 选择合适的汇编语言及开发环境(正确)3. 编写汇编代码,调试程序(正确)4. 优化程序性能(正确)四、常用汇编指令及功能1. 数据传输指令a. MOV:数据传送(正确)b. PUSH:压栈(正确)c. POP:出栈(正确)d. XCHG:交换数据(正确)2. 算术运算指令a. ADD:加法(正确)b. SUB:减法(正确)c. MUL:无符号乘法(正确)d. IMUL:有符号乘法(正确)3. 逻辑运算指令a. AND:逻辑与(正确)b. OR:逻辑或(正确)c. XOR:逻辑异或(正确)d. NOT:逻辑非(正确)4. 控制流指令a. JMP:无条件跳转(正确)b. JE:相等跳转(正确)c. JNE:不相等跳转(正确)5. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)6. 中断指令a. INT:软件中断(正确)b. INTO:中断向量表(正确)五、汇编语言与C语言的接口编程1. extern声明汇编函数(正确)2. 调用汇编函数的方法(正确)3. 汇编函数与C函数的数据交换(正确)4. 实例分析:汇编语言实现字符串排序(正确)汇编语言程序设计教案及习题答案教案章节:六、汇编语言的输入与输出1. 输入输出指令2. 字符串操作指令3. 实例分析:编写一个简单的输入输出程序七、汇编语言的杂项指令1. 杂项指令的概念2. 常用杂项指令及其功能3. 实例分析:杂项指令的应用八、汇编语言的子程序调用1. 子程序调用的概念2. 子程序的定义与调用3. 子程序的返回4. 实例分析:子程序在汇编语言中的应用九、汇编语言的程序举例1. 实例一:计算两个数的和2. 实例二:字符串的复制3. 实例三:数制的转换4. 实例四:文件的读写十、汇编语言程序的调试与优化1. 调试工具的使用2. 调试方法与技巧3. 程序优化的概念4. 程序优化的方法与技巧习题答案:六、汇编语言的输入与输出1. 输入输出指令a. IN:输入指令(正确)b. OUT:输出指令(正确)c. INPUT:输入函数(正确)d. PRINT:输出函数(正确)2. 字符串操作指令a. MOVS:字符串移动(正确)b. CMPS:字符串比较(正确)c. SCAS:字符串扫描(正确)d. LODS:字符串装载(正确)3. 实例分析:编写一个简单的输入输出程序(正确)七、汇编语言的杂项指令1. 杂项指令的概念(正确)2. 常用杂项指令及其功能a. NOP:无操作(正确)b. HLT:停止CPU运行(正确)c. CMC:翻转标志位(正确)d. ARPL:寄存器之间交换(正确)3. 实例分析:杂项指令的应用(正确)八、汇编语言的子程序调用1. 子程序调用的概念(正确)2. 子程序的定义与调用a. 定义子程序(正确)b. 调用子程序(正确)3. 子程序的返回(正确)4. 实例分析:子程序在汇编语言中的应用(正确)九、汇编语言的程序举例1. 实例一:计算两个数的和(正确)2. 实例二:字符串的复制(正确)3. 实例三:数制的转换(正确)4. 实例四:文件的读写(正确)十、汇编语言程序的调试与优化1. 调试工具的使用(正确)2. 调试方法与技巧(正确)3. 程序优化的概念(正确)4. 程序优化的方法与技巧(正确)汇编语言程序设计教案及习题答案教案章节:十一、汇编语言与操作系统1. 操作系统的概念2. 汇编语言在操作系统中的应用3. 实例分析:汇编语言编写简单的操作系统十二、汇编语言与设备驱动程序1. 设备驱动程序的概念2. 汇编语言在设备驱动程序开发中的应用3. 实例分析:汇编语言编写简单的设备驱动程序十三、汇编语言与嵌入式系统1. 嵌入式系统的概念2. 汇编语言在嵌入式系统中的应用3. 实例分析:汇编语言编写简单的嵌入式系统十四、汇编语言与汇编器的使用1. 汇编器的概念2. 汇编器的使用方法3. 实例分析:使用汇编器编写和调试汇编程序十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势2. 汇编语言在未来的应用领域3. 汇编语言学习的方法与建议习题答案:十一、汇编语言与操作系统1. 操作系统的概念(正确)2. 汇编语言在操作系统中的应用(正确)3. 实例分析:汇编语言编写简单的操作系统(正确)十二、汇编语言与设备驱动程序1. 设备驱动程序的概念(正确)2. 汇编语言在设备驱动程序开发中的应用(正确)3. 实例分析:汇编语言编写简单的设备驱动程序(正确)十三、汇编语言与嵌入式系统1. 嵌入式系统的概念(正确)2. 汇编语言在嵌入式系统中的应用(正确)3. 实例分析:汇编语言编写简单的嵌入式系统(正确)十四、汇编语言与汇编器的使用1. 汇编器的概念(正确)2. 汇编器的使用方法(正确)3. 实例分析:使用汇编器编写和调试汇编程序(正确)十五、汇编语言与汇编语言的未来发展1. 汇编语言的发展趋势(正确)2. 汇编语言在未来的应用领域(正确)3. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。

汇编语言程序设计实验指导及习题解答-第五章

汇编语言程序设计实验指导及习题解答-第五章

DW 1,2,3,4,5,6,7,8,9,10 DW($-ARY1)/2 DW ? DW 10,20,30,40,50,60,70,80 DW($-ARY2)/2 DW ? DW 100,200,300,400,500,600 DW($-ARY3)/2 DW ?
;构造数组 1 的地址表
97
;通过寄存器传递地址表的首地址
;通过寄存器传递地址表的首地址 ;求和数组 2 并保存结果 ;构造数组 3 的地址表
MOV TABLE+2,OFFSET COUNT3 MOV TABLE+4,OFFSET SUM3 LEA BX,TABLE CALL ARY-SUM MOV AX, 4C00H INT 21H ARY-SUM PROC NEAR PUSH AX PUSH PUSH PUSH MOV MOV MOV MOV XOR ADD ADD CX SI DI SI,[BX] DI,[BX+2] CX,[DI] DI,[BX+4] AX,AX AX,[SI] SI,2
TRAN
;分离出个位数 ;分离出十位数
MOV ROR MOV MUL ADD
CL,04H AL,CL BH,0AH BH AL,BL
;将十位数移至低 4 位 ;十位数乘以 10 ;乘积与个位数相加
TRAN
POP CX POP BX POPF RET ENDP END START
2.通过地址表传递参数地址 有时直接传递参数本身不能方便地实现所要求功能,需要通过地址表传递参数地址的 方法实现参数传递。具体方法是先建立一个地址表,该表由参数地址构成。然后把表的首 地址通过寄存器或堆栈传递给子程序。 【例 5.4】 计算 ARY1、ARY2、ARY3 三个数组和,并把各自的和分别放入 SUM1、 SUM2、SUM3 单元,其数组元素及结果均为字型数据。 显然数组求和应该用子程序完成,这样做使得代码真正共享。但在子程序中不能直接 引用数组变量名,否则不能做到通用,在这种情况下可以通过传递参数地址的方法实现最 终的参数传递。本例用数组首地址、元素个数的地址、结果地址构成一个地址表,通过寄 存器把表的首地址传递给子程序,子程序通过地址表的参数地址访问到所需参数。

汇编语言习题答案

汇编语言习题答案

汇编语言习题答案第一题:MOV AX, 0FEDCHMOV BX, 0A4EFHADD AX, BXMOV CX, AX答案分析:这道题目要求使用汇编语言计算两个十六进制数的和,并将结果存储在CX寄存器中。

解答步骤如下:1. 将0FEDCH赋值给AX寄存器,表示将十六进制数0FEDC存储在AX中。

2. 将0A4EFH赋值给BX寄存器,表示将十六进制数0A4EF存储在BX中。

3. 使用ADD指令将AX和BX的值相加,结果存储在AX中。

4. 最后,将AX的值赋值给CX寄存器,表示将求和结果存储在CX中。

第二题:MOV AL, 01HXOR AL, 01H答案分析:这道题目要求使用汇编语言将AL寄存器中的值与十六进制数01H 进行异或操作。

解答步骤如下:1. 将十六进制数01H赋值给AL寄存器,表示将十六进制数01存储在AL中。

2. 使用XOR指令对AL寄存器的值和01H进行异或操作,结果仍存储在AL中。

第三题:MOV AH, 0B7HOR AH, 08H答案分析:这道题目要求使用汇编语言将AH寄存器中的值与十六进制数08H 进行或操作。

解答步骤如下:1. 将十六进制数0B7H赋值给AH寄存器,表示将十六进制数0B7存储在AH中。

2. 使用OR指令对AH寄存器的值和08H进行或操作,结果仍存储在AH中。

第四题:MOV AX, 5CMP AX, 3JA Label1JB Label2JMP Label3Label1: MOV BX, 10JMP EndLabel2: MOV BX, 20JMP EndLabel3: MOV BX, 30End:答案分析:这道题目要求使用汇编语言编写一个条件语句,根据AX寄存器的值选择执行不同的代码段。

解答步骤如下:1. 将十进制数5赋值给AX寄存器,表示将十进制数5存储在AX 中。

2. 使用CMP指令将AX和3进行比较,如果AX大于3,则跳转到Label1;如果AX小于3,则跳转到Label2;如果相等,则跳转到Label3。

汇编语言作业及参考答案

汇编语言作业及参考答案

汇编语言作业答案1.3什么是汇编语言源程序、汇编程序、目标程序?见教材P41.10数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0Dh、0aH对应的是什么字符?见教材P81.11计算机中有一个“‘编码,如果把它认为是无符号数,它是十进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?97,61h,a1.13什么是DOS和POM-BIOS?DOS:磁盘操作系统;POM-BIOS:可编程的基本输入输出系统2.3 举例说明CF和OF标志的差异。

见教材P20-212.5 什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:(1)FFFFh:0 (2)40h:17h (3)2000h:4500h (4)B821h:4567h见教材P22-23 FFFF0h 417h 24500h BC777h2.6 8086有哪4种逻辑段,各种逻辑段分别是什么用途?见教材P232.10 说明下列指令中源操作数的寻址方式?如果BX=2000H,DI=40H,给出DX的值或有效地址EA的值。

(1)mov dx,[1234h] 直接寻址(2) mov dx,1234h 立即寻址(3) mov dx,bx 寄存器寻址(4) mov dx,[bx] 寄存器间接寻址(5) mov dx,[bx+123h] 寄存器相对寻址(6) mov dx,[dx+di] 基址变址寻址(7) mov dx,[bx+di+1234h] 相对基址变址寻址2.11 已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行后AX寄存器的内容。

(1)mov ax,1200h 1200h(2) mov ax,bx 0100h(3) mov ax,[1200h] 2a4ch(4) mov ax,[bx] 1234h(5) mov ax,[bx+1100h] 2a4ch(6) mov ax,[bx+si] 5678h(7) mov ax,[bx][si+1100h] b765h2.15 已知SS=FFAOH、SP=00B0H,画图说明执行下列指令序列时,堆栈区和SP的内容如何变化?mov ax,8057hpush ax SP=00B2 [00B1]=80hmov ax,0f79hpush ax SP=00B2 [00B2]=0f79hpop bx BX=0f79h SP=00B1pop [bx] SP=00B0h2.16给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态:mov al ,89h 不影响标志add al, al 见教材P38add al, 9dh 见教材P38cmp al, 0bch 见教材P40sub al, al 见教材P39dec al 见教材P39inc al 见教材P382.17设均为双字数据,分别存放在地址为的存储单元中,他们的运算结果存入单元。

汇编语言参考答案.pdf

汇编语言参考答案.pdf

汇编参考答案注:题目旁的数字为课本页码1.处理器的性能指标。

1处理器的性能用字长、时钟频率、集成度等基本的技术参数来衡量。

字长:表明处理器每个时间单位可以处理的二进制数据位数,如一次运算、传输的位数。

时钟频率表明处理器的处理速度,反映了处理器的基本时间单位。

集成度表明处理器的生产工艺水平,通常用芯片上集成的晶体管数量来表达。

2.冯诺依曼的基本思想。

10(1)采用二进制形式表示数据和指令,指令有操作码和地址码组成(2)将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完成计算任务。

(3)指令的执行时顺序的,即一般按照指令在存储器中的存放的顺序执行,程序分支由转移指令实现。

(4)计算机有存储器运算器,控制器。

输入设备和输出设备五大基本部件组成,并规定了5部分的基本功能。

3.有三种系统总线是哪些13或154地址总线、数据总线、控制总线4.计算机系统的层次结构17184(1)第0层数字电路层(2)第1层控制层(3)第2层机器语言层(4)第3层操作系统层(5)第4层汇编语言层(6)第5层高级语言层(7)第6层用户层5.软件与硬件的等价性原理19软件与硬件的等价性原理是指软硬件在逻辑功能上的等价,并不意味着性能和成本的等价。

6.区别如下概念:助记符,汇编语言,汇编语言程序和汇编程序助记符:帮助记忆指令的符号,反应指令的功能。

处理器指令助记符可以是任何一条处理器指令,表示一种处理器操作。

44汇编语言:为了便于理解与记忆,将机器指令用助记符代替形成的一种语言18汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。

汇编程序:汇编语言程序翻译成机器语言的过程称为汇编,完成汇编工作的程序就是汇编程序(Assembler)。

187.移位指令SHL SAL SHR SAR ROL ROR RCR93SHL(Shift Left):逻辑左移SHR(Shift Right):逻辑右移SAL(Shift Arithmetic Left):算术左移SAR:算术右移ROL(Rotate Left):循环左移ROR(Rotate Right):循环右移RCR(Rotate through Carry Right):带进位循环右移8.什么是存储器芯片的全译码和部分译码?各有什么特点194全译码:使用全部系统地址总线进行译码。

汇编语言程序设计实验二及答案

汇编语言程序设计实验二及答案

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。

二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。

编写一个程序,统计该字符串中字母‘A’的个数。

DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。

不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。

解:用宏实现字符显示。

程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。

汇编语言程序设计试题答案3(最终)

汇编语言程序设计试题答案3(最终)

汇编语言程序设计试题答案汇编语言程序设计试题一、单项选择题( 在每题的四个备选答案中~选出一个正确答案~并将正确答案的序号填在题干的括号内。

每题 2 分~共50 分)发出的拜候存储器的地址是( )A.偏移地址B. 物理地址C. 逻辑地址D. 段地址2. 使计算机执行某种操作的命令是( )A.伪指令B. 标号C. 指令D. 助记符3. 假设AX=3500H,CX=56B8~H当AND AX~C X指令执行后~AX=( )A. 1400HB. 77F8HC. 0000HD. 0FFFFH4. 计算机处置问题中会碰到大量的字符、符号~对此必需采用统一的二进制编码。

目前~微机中遍及采用的是( ) 码。

A. BCD码B. 二进制码C. 十六进制码码5. 以下关于8086CPU的工作道理的描述错误的选项是( ) 。

A( 汇编程序员可以通过对各种存放器中内容的点窜实现对CPU的控制。

B(CPU在拜候内存时~采用“段地址*16+偏移地址〞的形式给出要拜候的内存单位的物理地址。

C(任意时刻~CS:IP 指向的内容便是此刻CPU正在执行的指令。

D( 传送指令能够更改所有通用存放器的内容。

6( 一个有128 个字的数据区~它的起始地址为12ABH:00AB~H请给出这个数据区最末一个字单位的物理地址是, ,A(12C5BH B(12C59H C(12B6BH D(12BFEH7. 16 位布局的CPU不必然具备的特性是( ) 。

A. 运算器一次最多可以处置16 位的数据B. 存放器的最大宽度为16 位C. 地址总线为16 根D. 存放器和运算器之间的通路为16 位8. 以下指令的书写正确的选项是, , 。

A( push alB( mov cs:[0],ds:[10]C( pop siD( mov ds:[0],29( 在DEBUG东西中~显示存放器内容的命令是, , 。

A. GB. DC. TD. R10. 能够将ax 中的内容送到内存0000:0200H 处的指令序列是, , 。

汇编语言程序设计答案

汇编语言程序设计答案

汇编语言程序设计答案2篇汇编语言程序设计答案(一)汇编语言是一种底层的计算机语言,通过程序设计来控制计算机硬件的运行。

它是计算机体系结构的基础,可以用来编写高效的程序,实现各种任务。

下面是两个关于汇编语言程序设计的答案,帮助初学者理解汇编语言的基本概念和编程技巧。

答案一:```assemblymov ax, 5mov bx, 6add ax, bx```这个程序的作用是将寄存器ax的值设置为5,寄存器bx的值设置为6,然后将ax和bx的值相加,结果保存在ax中。

最后,ax的值为11。

答案二:```assemblymov ax, 10mov bx, 2div bx```这个程序的作用是将寄存器ax的值设置为10,寄存器bx的值设置为2,然后将ax和bx的值相除,商保存在ax中,余数保存在dx中。

最后,ax的值为5,dx的值为0。

通过以上两个简单的答案,我们可以看到汇编语言的基本操作和计算能力。

编写汇编语言程序需要了解计算机的底层架构和指令集,因为每种计算机体系结构都有不同的汇编语言。

因此,学习汇编语言需要掌握计算机组成原理和计算机体系结构的基本知识。

在编写汇编语言程序时,我们通常需要使用一些常见的指令,例如mov(数据传送)、add(加法运算)、sub(减法运算)、mul(乘法运算)、div(除法运算)、jmp(跳转指令)等等。

掌握这些常用指令和相应的语法规则是学习汇编语言的基础。

另外,汇编语言程序设计也需要学习如何使用寄存器和内存。

寄存器是存储在CPU内部的非常快速的存储器,可以暂时存储数据和指令。

CPU可以直接读取和写入寄存器中的数据。

内存是存储在计算机主存储器中的大量数据和指令。

CPU需要通过地址来访问内存中的数据和指令。

要编写高效的汇编语言程序,我们需要理解计算机的硬件原理和底层运行机制。

了解汇编语言可以提供对程序的细粒度控制,对程序性能的优化有很大帮助。

总的来说,汇编语言程序设计是一项复杂而有趣的任务。

汇编语言程序设计习题及答案

汇编语言程序设计习题及答案

汇编语言程序设计习题及答案汇编语言程序设计习题及答案汇编语言是一种底层的计算机语言,它直接操作计算机的硬件资源。

虽然在现代计算机编程中,高级语言如C、Java等更为常见,但了解汇编语言的基本原理和编程技巧对于理解计算机底层工作原理和进行性能优化非常重要。

本文将介绍一些汇编语言程序设计的习题及其答案,帮助读者巩固和提升汇编语言编程能力。

一、基础习题1. 编写一个汇编程序,将存储器中的某个字节的值加1,并将结果存回原位置。

答案:```assemblyMOV AL, [地址]INC ALMOV [地址], AL```2. 编写一个汇编程序,计算存储器中一个数组的和,并将结果存放在指定的寄存器中。

答案:```assemblyMOV CX, 数组长度MOV BX, 数组首地址MOV AX, 0LOOP_START:ADD AX, [BX]ADD BX, 2LOOP LOOP_START```二、进阶习题1. 编写一个汇编程序,实现字符串的逆序输出。

答案:```assemblyMOV SI, 字符串首地址MOV DI, 字符串尾地址MOV CX, 字符串长度DEC CXREVERSE:MOV AL, [SI]MOV AH, [DI]MOV [DI], ALMOV [SI], AHINC SIDEC DILOOP REVERSE```2. 编写一个汇编程序,实现两个16位无符号整数的相乘,并将结果存放在指定的寄存器中。

答案:```assemblyMOV AX, 第一个数MOV BX, 第二个数MUL BX```三、挑战习题1. 编写一个汇编程序,实现一个简单的计算器,支持加法、减法、乘法和除法运算。

答案:```assemblyREAD_INPUT:; 读取用户输入; ...PARSE_INPUT:; 解析用户输入,获取操作数和运算符; ...CALCULATE:; 根据运算符进行相应的计算; ...DISPLAY_RESULT:; 将计算结果显示给用户; ...LOOP:; 循环执行计算器程序; ...```2. 编写一个汇编程序,实现一个简单的迷宫游戏,玩家通过键盘控制角色在迷宫中移动,并找到出口。

《汇编语言程序设计》练习题参考答案.

《汇编语言程序设计》练习题参考答案.

《汇编语言程序设计》练习题一参考答案一、简答题1.2.答:字节单元:(30022H) = AB H,(30024H) = EF H字单元:(30021H) = AB34 H,(30022H) = CDAB H。

3.答:(1)MOV BX, OFFSET BLOCK + 0AHMOV DX, [BX](2)MOV BX, 0AHMOV DX, BLOCK[BX](3)MOV BX, OFFSET BLOCKMOV SI, 0AHMOV DX, [BX][SI]4.答:BYTE_VAR 42 59 54 45 0C EE 00 ?? - 01 02 01 02 ?? 00 ?? 0102 01 02 ?? 00 ?? 01 02 - 01 02 ??WORD_VAR 00 00 01 00 02 00 00 00 - 01 00 02 00 00 00 01 0002 00 00 00 01 00 02 00 - 00 00 01 00 02 00 ?? ??FB FF 59 42 45 54 56 02 -5.答:宏展开:2 DATA0 DW ?2 DATA1 DW ?6.答:可以用来指示存储器地址的寄存器有BX、SP、BP、DI、SI、IP、CS、DS、7.答:该程序的第一个字的物理地址是0AAA40H。

8.答:(1) 064DH(2) 0691H(3) 05ECH9.答:(1)MOV AX, [ BX+0CH ]MOV ZERO, AX(2)MOV AX, ARRAY[BX]MOV ZERO, AX10答:DATASG SEGMENT AT 0E000HWORD_ARRAY LABEL WORDBYTE_ARRAY DB 100 DUP (?)DATASG ENDSSTACKSG SEGMENT PARA STACK 'STACK'DW 32 DUP (?)TOS LABEL WORDSTACKSG ENDSCODESG SEGMENTORG 1000HMAIN PROC FARASSUME CS:CODESG, DS:DATASG, ES:DATASG, SS:STACKSG START:MOV AX, STACKSGMOV SS, AXMOV SP, OFFSET TOSPUSH DSSUB AX, AXPUSH AXMOV AX, DATASGMOV DS, AXMOV ES, AX……RETMAIN ENDPCODESG ENDSEND START11.答: CLRB MACRO N, ARRAYCLDMOV CX, NMOV AL, 20HLEA DI, ARRAYREP STOSBENDM12.答:(1)AX、BX、CX、DX、AH、AL、BH、BL、CH、CL、DH、DL、13.答:唯一正确的是D。

《汇编语言程序设计》习题解答及课程实验、设计辅导

《汇编语言程序设计》习题解答及课程实验、设计辅导

实验一汇编程序的汇编及运行1.实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。

2.实验涉及知识汇编程序从编写到执行的过程编程→.ASM→编译→.OBJ→连接→.EXE→加载→内存中的程序→执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。

2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入:object filename[.obj]:按回车键。

Source listling[nul.lst]:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。

Lst文件用于查看编译为目标文件的过程中产生的中间结果。

Cross-reference [nul.crf]:按回车键。

(4)如果系统没有提示出错,那么编译过程就完成了。

如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名.obj)run file [.exe]:按回车键。

List file [nul.map]:按回车键。

Libraries [.lib]:按回车键。

(6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。

如果出现‘no strack segment’的错误警告,不用理会。

3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。

程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。

3.实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。

生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。

汇编语言课后习题解答

汇编语言课后习题解答

汇编语言课后习题解答汇编语言作为一种低级编程语言,被广泛应用于计算机系统的底层开发与优化。

在学习汇编语言的过程中,习题解答是一个非常重要的环节,它有助于我们深入理解汇编语言的原理和应用。

本文将针对汇编语言课后习题进行解答和分析。

第一题:需求:写一个汇编程序,从键盘输入两个数,求其和并输出。

解答:```assembly.datanum1 dw ?num2 dw ?sum dw ?.codemain procmov ax, @datamov ds, axmov ah, 1int 21h ;读取第一个数sub al, '0' ;将ASCII码转换为二进制数 mov num1, almov ah, 1int 21h ;读取第二个数sub al, '0' ;将ASCII码转换为二进制数 mov num2, aladd al, num1mov sum, aladd sum, '0' ;将结果转换为ASCII码mov ah, 2mov dl, sumint 21h ;输出结果mov ax, 4C00hint 21h ;程序结束main endpend main```第二题:需求:编写一个汇编程序,判断一个数是否是素数,并输出结果。

解答:```assembly.datanum dw ?.codemain procmov ax, @datamov ds, axmov ah, 1int 21h ;读取一个数sub al, '0' ;将ASCII码转换为二进制数mov num, almov bx, 2 ;用bx寄存器从2开始除mov cx, 0 ;用cx统计除数的个数loop_start:mov dx, 0mov ax, numdiv bx ;用ax除以bx,余数存在dxcmp dx, 0je loop_end ;如果余数为0,则跳出循环inc bx ;除数加1inc cx ;除数个数加1cmp bx, axjg loop_end ;如果除数大于被除数,跳出循环 jmp loop_start ;循环继续loop_end:cmp cx, 0je prime ;如果除数个数为0,则是素数jne not_prime ;否则不是素数prime:mov ah, 2mov dl, 'Y' ;输出判断结果为是素数int 21hjmp exitnot_prime:mov ah, 2mov dl, 'N' ;输出判断结果为不是素数int 21hexit:mov ax, 4C00hint 21hmain endpend main```通过以上两个题目的解答,我们可以看出汇编语言的编写方法和具体步骤。

汇编语言习题答案 (3)

汇编语言习题答案 (3)

汇编语言习题答案 (3)汇编语言习题答案(3)第3章自测练习一、选择题(四选一)1.则表示一条处理器指令所在存储单元的符号地址就是c。

a变量b常量c标号d偏移量2.汇编语言中的变量存有多种类型属性,但错误的类型就是b。

a字节型byteb字符型charc字型wordd双字型dword3.继续执行movbx,segvar指令,bx获得变量var的b。

a物理地址b段地址c偏移地址d内容4.masm语句中,采用c分隔标号和指令。

a逗号b分号c冒号d空格5.欲设定从偏移地址100h开始安排程序,可使用a伪指令。

aorg100hbstart=100hcstartdb100hdstartequ100h6.与“movbx,offsetvar”指令等效的指令是d。

amovbx,varb1dsbx,varclesbx,vard1eabx,var.7.下条语句bufdbl0dup(3dup(?,10),3,10)编订后,变量buf占据的存储单元字节数就是b。

a100b80c40d208.数据定义语句“numldw(12or6and2)ge0eh”,定义的num1单元的内容是b。

a0b0ffffhc1d0ffh9.建议将a、b两个字符的ascii码41h和42h顺序存放在已连续两个字节存储单元中,可以采用的语句就是a。

adb`ab'bdw`ab'cdb0abhddw0abh10.在汇编语言程序中,对end语句叙述正确的是c。

aend语句就是一可以继续执行语句bend语句表示程序执行到此结束cend语句表示源程序到此结束dend语句在汇编后要产生机器码11.下面的数据传输指令中,错误的操作方式就是d。

amovss:[bx+di],byteptr10hbmovdx,l000hcmovwordptr[bx],1000hdmovds,2000h12.下面指令执行后,变量dab中的内容是c。

dawdw2a05hdabdb0fahmoval,byteptrdawsubdab,ala0dahb0fahc0f5hd0d0h113.根据下面的语句序列,ax寄存器的内容就是c。

汇编语言习题答案

汇编语言习题答案
int 10h
sub dl,1
mov ah,02h
int 10h
jmp start
exit:
MOV AH,4CH
INT 21H
CODES ENDS
END START
3、
mov cx,50
lea si,elems
mov di,si
add di,99
reverse:
mov al,[si]
xchg al,[di]
SHL BX,CL
ADD AX,BX
3、
CODE SEGMENT
ASSUME CS:CODE
BEGIN:MOV AH,1
INT 21H
CMP AL,’a’
JB STOP
CMP AL,’z’
JA STOP
SUB AL,20H
MOV DL,AL
MOV AH,2
INT 21H
JMP BEGIN
STOP:
MOV AH,4CH
(5)当结果在内存或CPU中,或结果不明确时,可借助于DEBUG调试,观察程序设计的正确性,如需要改正,还需回到编辑程序中重新编辑源程序。
四、
1、data segment
NAME1 db 'HU DAMING','$'
data ends
code segment
assume cs:code,ds:data,es:data
4、在计算机上运行汇编语言程序的步骤是:
(1)用编辑程序建立ASM源文件;
(2)用汇编程序把ASM文件转汇编成OBJ文件,如需要改正,还需回到编辑程序中重新编辑源程序;
(3)用连接程序把OBJ文件转连接成EXE文件,如需要改正,还需回到编辑程序中重新编辑源程序;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一汇编语言源程序的输入一、实验目的1.通过实验了解和熟悉微机系统的配置。

2.学习在DEBUG状态下输入汇编源程序的方法。

3.初步掌握调试(在DEBUG状态下)的过程。

二、实验原理1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。

用单步跟踪的方法验证指令的功能。

2. 以下是给定的参考程序,并在实验时在每条指令的“;”符号右边按要求填写指令的执行结果。

注:⑴微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;⑵在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP 寄存器原来的值。

三、实验仪器微机一台。

四、实验步骤1. 开机后进入DOS系统,C > DEBUG↙(↙回车符)-(为DEBUG 提示符)当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。

2. 用DEBUG的Register命令检查所有寄存器内容,并作记录。

命令格式:R [寄存器名]该命令的功能是显示寄存器的内容,或修改某一指定寄存器内容,若[寄存器名]缺省,则显示所有寄存器内容。

例如:-R3. 用DEBUG的Assemble命令输入汇编源程序。

格式:A [内存地址]注:用“[ ]”符号括起来的部分表示可以省略。

该命令的功能是从指定的内存地址开始(括号不要输入)逐条输入汇编语言源程序并汇编成机器码存入内存。

若地址缺省,则接上一个A命令最后一条指令之后输入汇编语句,若没有用过A命令,则从CS:0100H地址开始输入。

例如:-A0CD3:0100-在输入A命令之后,或每输入一条指令之后,显示器的左端给出了内存的段地址和偏移地址。

每条指令均用回车(↙)结束。

若输入的指令有语法错误,DEBUG拒绝接收,并给出提示,此时可以重新输入。

程序的最后一条指令输入完之后,再按一次回车键(↙),即可结束汇编命令,回到DEBUG提示符“-”状态。

4. 用DEBUG的Unassemble命令反汇编。

命令格式:U [起始地址[终止地址]]该命令的功能是从起始地址到终止地址反汇编目标码,缺省值是接上一个U命令或从CS:0100H地址开始。

例如:-U显示器上将显示程序的内存地址、指令机器码的汇编源程序三列对照清单。

5. 用DEBUG的Trace命令单步跟踪程序。

命令格式:T [ =起始地址] [指令条数]该命令的功能是从指定的起始地址开始逐条执行指令,每执行完一条指令,屏幕显示所有寄存器内容和下一条指令地址和指令。

若[=起始地址]缺省,则T命令从CS:IP地址开始执行指令。

例如:-T↙重复这一过程,即可看到每条指令执行后,所有寄存器和标志寄存器的标志位内容。

此时,要检查内存单元的数据,可用DEBUG的D 命令。

6. 用DEBUG的Dump命令显示存贮器单元的内容。

命令格式:D[起始地址[终止地址]]该命令的功能是从起始地址到终止地址,连续显示存贮器单元的内容。

若地址缺省,则接上一个D命令或从DS:0100H地址开始显示。

例如:-D↙参考程序:MOV AX, 2000 ; AL=00HMOV DS, AX ; DS=2000HNOT AX ; AX=DFFFHXOR AX, AX ; AX=0000HDEC AX ; AX=FFFFHINC AX ; AX=0000HMOV BX, 2030 ; BH=20HMOV SI, BX ; SI=2030HMOV [SI], BL ; [2030H]=30HMOV WORD PTR[SI], 10F ; [2030H]= 0FH [2031H]=01HMOV DI, SI ; DI=2030HMOV [DI+50], BH ; [DI+50H]=20HMOV BH, [SI] ; BH=0FHMOV BL, [DI+50] ; BL=20HMOV SP, 5000PUSH AX ; AX= 0000H [SS:4FFEH]=00H [SS:4FFFH]=00HPUSH BX ; BX=0F20H [SS:4FFCH]=20H [SS:4FFDH]=0FHPOP AX ; AX=0F20HPOPF ; F=00000000NEG BX ; BX=F0E0HXCHG BX, AX ; BX=0F20HSTD ; F=01010001STI ; F=01110001CLD ; F=00110001CLI ; F=00010001ADC DI, 2050 ; DI=4081H F=00000010ADC SP, DI ; SP=9081H F=ADC AX, 1500 ; AX=05E0H F=00000001SUB AX, BX ; AX=F6C0H BX=0F20HSHL AH, 1 ; AH=ECHRCL AX, 1 ; AX=D981HSHR BH, 1 ; BH=07HRCR BL, 1 ; BL=90HMOV CL, 4MOV DX, 80F0ROL DX, CL ; DX=0F08H CL=04HINT 20 ; CS=00A7H IP=1072H五、实验报告要求1. 整理每条指令执行的结果,填到打印清单的右半部分(应注意内存数据检查的正确性)。

2. 比较实验记录与理论分析的结果是否相同,若有不同,找出差别及问题所在。

3.总结本次实验的体会。

实验二数据的建立与传送程序Array一、实验目的1. 继续学习DEBUG命令。

2. 验证指令的功能。

二、实验原理在DEBUG状态下,分别输入下面各程序段,每输入完一个程序段,用G命令进行连续方式执行程序,在连续执行时,要记录程序的执行结果。

参考程序:1. 在内存10000H单元开始,建立00H~0FH~00H 31个数,要求00H~0FH数据逐渐增大,0FH~00H逐渐减小。

该程序从内存CS:0100H地址开始输入。

MOV AX, 1000HMOV DS, AXMOV SI, 0MOV CL, 0FHXOR AX, AXPPE1:MOV [SI], ALINC SIINC ALDEC CLJNZ PPE1MOV CX, 10HPPE2:MOV [SI], ALINC SIDEC ALLOOP PPE2INT 20H注:转移指令的符号地址直接用绝对偏移地址,该地址在用A命令汇编输入时,可以看到程序全部运行完之后,可用DEBUG的Dump 命令查看建立的数据块内容。

例如:-D1000:00 1E2. 把上一个程序的执行结果(建立的31个字节数据块,其首地址在10000H),分几种方式传送到以下指定的区域。

(a) 该程序从内存CS:0150H开始输入。

把数据块传送到15050H开始的存贮区域中。

参考程序:MOV AX, 1000HMOV DS, AXMOV SI, 0MOV DI, 5050HMOV CX, 1FH ; 数据块长度是31PPEA:MOV AL, [SI]MOV [DI], ALINC SIINC DILOOP PPEAINT 20H检查内存数据块的传送情况,可用“D”命令。

(b) 用串传送指令MOVSB,把数据块传送到15150H开始的区域,该程序从内存CS:0200H开始输入。

检查程序最后的执行结果,可用“D”命令,例如:-D1000:5150↙(c) 用重复串操作指令“REP MOVSB”把数据块传送到15250H开始的区域。

该程序从CS:250H地址开始输入。

检查程序的最后执行结果时,可用:-D1000: 5250H(d) 用串操作的减量工作方式,把数据块传送到25050H开始的区域。

该程序从CS:0300H开始输入。

检查程序的最后执行结果,用D命令:-D2000:5050↙三、实验仪器微机一台。

四、实验步骤参照实验一的步骤,按照本实验程序的内容,分别输入各段程序,连续执行程序,记录每个程序段的最后结果。

若想把源数据块重新换一批数据,可以用DEBUG的Fill命令填充新的数据。

例如:-F1000:00 L1F 33↙从1000:0000H开始的31个字节被替换成33H。

五、实验预习要求1.认真阅读DEBUG调试程序的命令说明。

2.仔细阅读本实验给出的程序段。

3.写出每个程序段的结果数据(分析结果),并说明结果所在的位置(寄存器或存贮器)。

六、实验报告要求1. 整理每个程序段在实验时的记录内容。

2. 比较每个程序段的特点。

3. 分析本次实验出现的问题,找出问题所在。

实验三分支程序设计一、实验目的⒈练习分支程序的编写方法。

⒉练习汇编语言程序的上机过程。

二、实验原理⒈通过分支程序设计调试和运行,进一步熟悉掌握汇编程序执行的软件环境。

⒉通过分支程序的执行过程,熟悉EDIT的使用,建立OBJ文件EXE文件的方法。

三、实验仪器⒈微机一台。

四、实验内容给出三个有符号数,编写一个比较相等关系的程序:(1)如果这三个数都不相等,则显示0;(2)如果这三个数中有两个数相等,则显示1;(3)如果这三个数都相等,则显示2;DEBUG:EDIT:执行结果为:0五、实验报告要求1.该源程序在DEBUG和EDIT两种状态下运行。

2. 实验报告中要有源程序和执行结果。

实验四统计学生成绩程序一、实验目的进一步掌握分支程序和循环程序的编写方法。

二、实验原理设有10个学生的成绩分别为56、69、84、82、73、88、99、63、100和80分。

试编制程序分别统计低于60分、60~69分、70~79分、80~89分、90~99分及100分的人数存放到s5、s6、s7、s8、s9及s10单元中。

这一题目的算法很简单,成绩分等部分采用分支结构,统计所有成绩则用循环结构完成。

程序框图如下图所示。

三、实验仪器Y程序框图四、实验步骤输入编写的源程序,进行调试。

参考程序如下:;PROGRAM TITLE GOES HERE――result;************************************DA TAREA SEGMENT ;DEFINE DA TA SEGMENTGRADE DW 56,69,84,82,73,88,99,63,100,80S5 DW 0S6 DW 0S7 DW 0S8 DW 0S9 DW 0S10 DW 0DA TAREA ENDS;************************************PROGNAM SEGMENT ;DEFINE CODE SEGMENT;----------------------------MAIN PROC FAR ; MAIN PART OF PROGRAMASSUME CS:PROGNAM, DS:DA TAREASTART: ; STARTING EXECUTION ADDRESS; SET UP STACK FOR RETURNPUSH DS ; SA VE OLD DATA SEGMENTSUB AX,AX ; PUT ZERO IN AXPUSH AX ; SA VE IT ON STACK; SET DS REGISTER TO CURRENT DA TA SEGMENTMOV AX,DA TAREA ; DA TAREA SEGMENT ADDRMOV DS,AX ; INTO DS REGISTER; MAIN PART OF PROGRAM GOES HEREMOV S5, 0 ; INITIALIZE COUNTERMOV S6, 0MOV S7, 0MOV S8, 0MOV S9, 0MOV S10, 0MOV CX, 10 ; INITIALIZE LOOP COUNT V ALUEMOV BX, OFFSET GRADE ; INITIALIZE FIRST ADDR COMPARE:MOV AX, [BX] ; GET A RESULTCMP AX, 60 ; <60?JL FIVECMP AX, 70 ; <70?JL SIXCMP AX, 80 ; <80?JL SEVENCMP AX, 90 ; <90?JL EIGHTCMP AX, 100 ; =100?JNE NINEINC S10JMP SHORT CHANGE-ADDRNINE: INC S9JMP SHORT CHANGE-ADDREIGHT: INC S8JMP SHORT CHANGE-ADDRSEVEN: INC S7JMP SHORT CHANGE-ADDRSIX: INC S6JMP SHORT CHANGE-ADDRFIVE: INC S5CHANGE-ADDR:ADD BX, 2LOOP COMPAREMOV CX,6 ;在源程序中添加的输出程序(开始)MOV SI,OFFSET S5AGAIN: MOV DX,[SI]AD DX,30HMOV AH,02HINT 21HMOV DL,20HMOV AH,02HINT 21HADD SI,2LOOP AGAIN :(结束)RET ; RETURN TO DOSMAIN ENDP ; END OF MAIN PART OF PROGRAM; ------------------------------PROGNAM ENDS;***************************END START ; END ASSEMBL Y输出结果:1 2 1 4 1 1五、实验要求1.读懂所给的程序。

相关文档
最新文档