汇编实验10子程序及程序联编练习

合集下载

汇编语言程序设计题库练习题1--详细答案

汇编语言程序设计题库练习题1--详细答案

汇编语言程序设计题库练习题1--详细答案汇编语言程序设计练习题一、单项选择题1、与100.5不相等的数据是【 C 】A. 64.8HB. 1100100.1BC. 64.5HD. 144.4O2、指向程序代码段的段寄存器是【 A 】A. CSB. DSC. SSD. FS3、在内存字单元(20000)中存放数1324H,即(20000)=1324H,则从字节单元20001H 中取出一个字节为【 A 】A. 13H B. 24HC. 1324HD. 2413H4、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是【 A 】A. MOV AL,00HB. AND AL,00HC. XOR AL,ALD. SUB AL,AL5、指令JMP BX转移的目标地址的偏移量为【 C 】A. IP+BX的内容B. IP+[BX]C. BX的内容D. BX所指向的内存字单元的内容6、DA1 DW 2A05HDA2 DB 07AH┇MOV AL,BYTE PTR DA1SUB DA2,AL上述指令执行后,DA2中的内容是【 C 】A. 7AH B. 02AHC. 075HD. 050H7、某存储单元的物理地址是12345H,可以作为它的段地址有【 d 】A. 2345HB. 12345HC. 12340HD. 1234H8、设有数据定义X2 DW 10 DUP (0,1,2),定义了多少字节的缓冲【 C 】A. 6B. 30C. 60D. 409、有符号数AX除以2的指令是【 B 】A. SHR AX,1B. SAR AX,1C. ROR AX,1D. RCR AX,110、DEC BYTE PTR[BX]中的操作数的数据类型是【 C 】A. 字B. 双字C. 字节D. 四字11、设SP=4AH,执行段内返回指令RET后,SP的值是【 C 】A. 44HB. 48HC. 4CHD. 50H12、指令“LOOP 标号”转移到标号的的条件是【 A 】A. CX≠0B. ZF=0C. CX≠0 AND ZF=0D. CX≠0 OR ZF=108086二、填空题1、汇编语言源程序经【编译】后,形成目标文件,再经过【链接】后,形成可执行文件。

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

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

汇编语言程序设计教案及习题答案教案章节:一、汇编语言简介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. 汇编语言学习的方法与建议(正确)重点和难点解析本文主要介绍了汇编语言程序设计的基础知识和应用领域,通过详细的章节安排,从汇编语言的基本概念、语法规则、程序设计步骤、常用指令及其功能、输入输出操作、杂项指令、子程序调用、程序举例、调试与优化等方面进行了深入讲解。

汇编练习题

汇编练习题

汇编语言练习题一、基础知识类1. 列出汇编语言中的寄存器及其用途。

2. 解释汇编语言中的指令格式。

3. 什么是标志寄存器?它有哪些常用的标志位?4. 描述汇编程序的基本结构。

5. 如何在汇编语言中进行数据定义?二、数据传送类1. 将AX寄存器的值传送到BX寄存器。

2. 将内存单元[1000H]的值传送到CX寄存器。

3. 将数据段中的一个字节传送到AL寄存器。

4. 实现两个内存单元之间的数据交换。

5. 将一个字的数据传送到DX和AX寄存器。

三、算术运算类1. 计算H + 5678H,并将结果存储在AX寄存器中。

2. 计算H 5678H,并将结果存储在AX寄存器中。

3. 实现16位无符号数的乘法运算。

4. 实现16位无符号数的除法运算。

5. 使用汇编语言实现一个简单的加法计算器。

四、逻辑运算类1. 对AX寄存器的值进行按位取反操作。

2. 计算H和5678H的逻辑与运算结果。

3. 计算H和5678H的逻辑或运算结果。

4. 计算H和5678H的逻辑异或运算结果。

5. 实现一个简单的逻辑表达式求值程序。

五、控制转移类1. 实现一个无条件跳转指令。

2. 根据CX寄存器的值,实现一个循环结构。

3. 使用比较指令和跳转指令实现一个简单的排序算法。

4. 编写一个程序,判断一个数是否为素数。

5. 实现一个多分支选择结构。

六、字符串操作类1. 实现将一个字符串复制到另一个内存区域。

2. 实现字符串的逆序排列。

3. 计算一个字符串的长度。

4. 比较两个字符串是否相等。

5. 在一个字符串中查找某个字符的位置。

七、中断及系统调用类1. 编写一个简单的中断处理程序。

2. 使用INT 21H中断实现屏幕输出一个字符串。

3. 使用INT 21H中断读取键盘输入的字符串。

4. 编写一个程序,实现定时器中断。

5. 使用汇编语言实现系统调用,完成文件读写操作。

八、子程序设计类1. 编写一个子程序,用于计算两个数的最大公约数。

2. 实现一个子程序,能够将十进制数转换为十六进制数。

汇编语言实验讲义题目

汇编语言实验讲义题目

1.请输入任意一个字符串,将该串倒序后在屏幕上输出。

2.从键盘上输入一个字符串,统计其中空格和A的个数,并将结果在屏幕上显示。

3.请任意输入一个字符串,并将该串中的空格全部删除,并将结果在屏幕上显示。

4.请任意输入一个字符串,并将该串中所有的A换成CC,并将结果在屏幕上显示。

5.请任意输入一个字符串,将该串所有的A换成B,并将结果在屏幕上显示。

6.将一组数中的负数求和,并统计负数的个数,并在屏幕上显示结果。

38H,4AH,0C5H,83H,9CH,0B4H,7FH,0C4H,05H,0F57.将一组数中的正数求和,并统计正数的个数,并在屏幕上显示结果。

38H,4AH,0C5H,83H,9CH,0B4H,7FH,0C4H,05H,0F58.将以下数按BCD码求和,并在屏幕上显示结果。

38H,48H,075H,83H,96H,024H,74H,084H,05H,055H9.从键盘输入两组数743216、527846,按BCD求和,并将结果在屏幕上显示。

10.从键盘输入两组数743216、527846,求和,并将结果在屏幕上显示。

20.从键盘输入一串二进制数1AH,7CH,BAH,3AH,45H,63H求其和,并在屏幕上输出。

21.从键盘输入下列两组十进制数,求其和,并在屏幕上输出。

357894184653142511.现有10个子程序,其功能为以十六进制形式显示其入口地址,要求输入0—9,分别执行不同的子程序后返回主程序并继续等待键盘输入,若输入回车则退出结束程序。

12.在多模块设计中主模块中调用内部模块的BUF1,BUF2,BUF3,BUF4。

主模块根据从键盘输入的指令(例如输入A,B,C,D)调用上述对应的子程序,每个子程序的任务是显示各自的子程序编程地址。

调用后继续等待调用,若输入ESC键(ASCLL码为1BH)则结束程序的执行,请编写完成该任务的原程序。

13.现有一组参量按16位编码,各字段的长度如下,BIT1=6,BIT2=4,BIT3=3,BIT4=3,BIT1位于高位,BIT4位于低位,设BIT1=52,BIT2=13,BIT3=5,BIT4=3 请用程序编码将这些字段编码组合成一个字,按二进制在屏幕上显示。

汇编实验报告--子程序设计实验

汇编实验报告--子程序设计实验

实验五子程序设计实验学生姓名:何茂杰学号:2010305104 专业班级:计算机本科一班指导老师:文远熔实验日期:实验成绩:一、实验目的1.掌握主程序与子程序之间的调用关系及调用方法;2.掌握子程序调用过程中近程调用与远程调用的区别;3.掌握通过堆栈转送参数的方法。

二、实验内容1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。

要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。

三、实验环境PC微机DOS操作系统或Windows 操作系统四、实验要求1.第一个实验程序用子程序的近程调用实现。

由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。

实验过程中可以从堆栈的内容看到两个子程序的返回地址值。

由于是近调用,地址值只包括返回地址的段内偏移量。

在每个子程序的执行中,检查CS值是不变的。

2.预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图;熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

五、主要实验步骤1.编辑、汇编两个源程序,生成相应的可执行文件(.EXE)2.用DEBUG的R命令,T命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。

特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。

3.检查程序执行的结果是否正确。

六.实验结果:七.心得体会了解了把BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码源代码:.MODEL SMALL.336.STACK 200H.DA TAAS CV AL DB ‘12345’BINV AL DW ?.CODEMAIN PROCSTART:MOV AX,@DA TAMOV DS,AXLEA BX ASCV ALPUSH BXLEA BX,BINV ALPUSH BXCALL CONV ASCBINMOV AX,4C00HINT 21HMAIN ENDPCONV ASCBIN PROCPUSH BPMOV BP,SPADD SP AXPUSH AXPUSH BXPUSH CXPUSH SIPUSH DIMOV BX,0AHMOV SI,[BP+6]MOV DI,[BP+4]SUB DI,SIMOV [BP-2],DIMOV CX,[BP-2]ADD SI,[BP-2]DEC SIMOV WORDE PTR[BP-4],0001MOV DI,[BP+4]MOV WORD PTR[DI],0 NEXT:MOV AL,[SI]AND AX,000FHMUL WORD PTR[BP-4]ADD [DI],AXMOV AX,[BP-4]MUL BXMOV [BP-4],AXDEC SILOOP NEXTPOP DIPOP SIPOP CXPOP BXPOP AXMOV SP,BPPOP BPRET 0004CONV ASCBIN ENDPEND MAIN。

汇编语言程序设计 习题与答案.ppt

汇编语言程序设计 习题与答案.ppt
习题与答案
❖第一章 基础知识 ❖第二章 80x86计算机组织 ❖第三章 指令系统和寻址方式 ❖第四章 汇编语言程序格式 ❖第五章 循环与分支程序设计 ❖第六章 子程序设计 ❖第七章 高级汇编语言技术 ❖第八章 输入输出程序设计
2020-6-17
谢谢阅读
1
第一章 基础知识 1. P14,1、2、6、7题。
系统程序。 13. 连接程序I:把若干模块连接成可执行文件的系统程序 14. 指令O:告诉CPU要执行的操作,在程序运行时执行 15. 伪指令N:由汇编程序在汇编过程中执行的指令。
谢谢阅读
2020-6-17
13
第三章 指令系统和寻址方式
• P107,1、2、3、4、5、8、13、14、15、17、 18、19、23、25、27、29、30、32、33、35、 37、38、49、51题。
– 逻辑地址:3010:007A
• 3010H * 16D + 7AH = 30100H + 7AH = 3017AH
– 总结:
• 同一物理地址,可用不同逻辑地址表示。
谢谢阅读
2020-6-17
11
第二章 80x86计算机组织 — 2.9
2.9:CPU、存储器、堆栈、IP、SP、状态标志 1. CPUM:分析、控制、执行指令的部件, 由ALU与寄存器等组成。 2. 存储器C:存储程序、数据等信息的记忆装 置,微机有RAM与ROM两种。 3. 堆栈D:以后进先出方式工作的存储空间。 4. IPB:指示下一条指令的地址。 5. SPA:保存当前栈顶地址的寄存器。 6. 状态标志L:记录指令操作结果的标志。 7. 控制标志K:控制操作的标志,如DF位。 8. 段寄存器J:保存各段起始地址的寄存器。

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

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

实验一汇编程序的汇编及运行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 stracksegment’的错误警告,不用理会。

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

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

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

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

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验)

汇编语言程序设计实验报告三(子程序设计实验)一、实验目的1、掌握主程序与子程序之间的调用关系及其调用方法。

2、掌握子程序调用过程中近程调用与远程调用的区别。

3、熟练掌握码型变换的程序。

二、实验内容1、从键盘输入二位非压缩BCD数,存入AX寄存器中,编程实现将其转换为二进制数,并在屏幕上显示。

要求码型转换程序用远程子程序编写,字符显示用近程子程序编写。

数据可循环输入,遇‘00’结束。

三、实验准备1、预习子程序设计的基本方法,根据实验内容要求编写出实验用程序。

2、熟悉键盘输入和字符显示的程序段的编制。

四、实验步骤1、编辑、汇编源程序,生成可执行文件。

2、执行程序,检查输入、输出结果,看是否正确。

如不正确,用DEBUG检查,修改源程序,再汇编、运行,直到程序正确为止。

3、用DEBUG的T命令或P命令跟踪程序的执行,观察在远程和近程调用过程中,堆栈的变化情况。

五、实验报告要求1、分析近程调用和远程调用的主要区别。

用DEBUG命令观察执行过程有何不同。

2、分析实验结果及所遇到的问题的解决方法。

主程序流程图转换子程序TRAN流程图七、程序清单STA SEGMENT STACK ’STACK’DB 100 DUP(0)STA ENDSGSAG SEGMENT PARA ‘CODE’ASSUME CS:CSAG MAIN PROC FARSTRA T: PUSH DSSUB AX,AXPUSH AXREV: MOV AH,1INT 21HMOV BL,ALINT 21HMOV AH,ALMOV AL,BLCMP AX,3030HJE ENDTRANCALL NEAR PTR TRANCALL FAR PTR CONMOV AL,0DHCALL FAR PTR DISPMOV AL,0AHCALL FAR PTR DISPMOV AL,0AHCALL FAR PTR DISPJMP REVENDTRAN: RETMAIN ENDPTRAN PROC NEARAND AX,0F0FHMOV BL,ALMOV BL,ALMOV CL,3SHL AL,CLMOV CL,1SHL BL,CLADD AL,BLADD AL,AHRETTRAN ENDPCSAG ENDSCSBG SEGMENT PARA’CODE’ASSUME CS:CSBGCON PROC FARPUSH AXMOV CL,4SHR AL,CLADD AL,30HCMP AL,39HJBE CON2ADD AL,7CON2: PUSH AXMOV AL,0DHCALL FAR PTR DISPMOV AL,OAHCALL FAR PTR DISPPOP AXCALL FAR PTR DISPPOP AXAND AL,0FHADD AL,30HCMP AL,39HJBE CON1ADD AL,7CON1: CALL FAR PTR DISPRETCON EDNPDISP PROC FARPUSH BXMOV BX,0MOV AH,14INT 10HPOP BXRETDISP ENDPCSBG ENDSEND START。

练习汇编语言源程序的编辑、汇编和连接

练习汇编语言源程序的编辑、汇编和连接

实验二练习汇编语言源程序的编辑、汇编和连接一、实验目的1、熟练使用EDIT编辑软件编辑汇编语言源程序。

2、熟练使用MASM宏汇编软件汇编源程序。

3、熟练使用LINK连接程序生成.EXE文件。

二、实验任务利用EDIT、MASM、LINK找出下面的源程序中的错误,并得出运行结果。

DATA SEGMENTA DW 5F73HB DW CD89HC dw ?Data endsCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,AMOV BX,BADD AX,BXMOV C,AXMOV AH,4CHINT 21HCODE ENDSEND START三、实验设备PC机一台四、实验步骤1、输入源程序。

2、汇编、连接程序,生成.EXE文件,执行文件,检查结果。

3、4、5、6、实验一的相关知识以下程序都是在DOS操作系统完成的。

一般情况下MASM、LINK都在一个MASM子目录下。

一、编辑程序(EDIT)用户在任一目录下都可以输入EDIT,进入编辑环境,输入源程序,并以.ASM的扩展名保存。

输入以下源程序,并以TEST.asm保存。

DATA SEGMENTA DW 5F73HB DW CD89HC dw ?Data endsCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,AMOV BX,BADD AX,BXMOV C,AXMOV AH,4CHINT 21HCODE ENDSEND STARTTest.asm是一个带有两处语法错误的汇编语言源文件。

二、汇编程序(MASM.EXE)1、汇编程序的主要功能((5)产生源程序的目标代码文件,供连接程序用;(6)产生列表文件,给出源程序指令相对应的地址计数器的值和符号表;2、使用(1)命令格式(假设MASM子目录在D盘)D:\>CD MASM1)检查汇编语言源程序,若程序中有不符汇编程序要求的语句,给出错误信息;(2)利用地址计数器确定被汇编的每条指令的偏移地址;(3)确定各符号的偏移地址,建立符号表;(4)利用符号表,机器指令表和伪操作表把助记符指令翻译成机器语言指令;D:\MASM>MASM出现:Source(.asm):指定汇编源程序的文件名,缺省的扩展名为.asm。

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

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

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

虽然在现代计算机编程中,高级语言如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.设计:
分别为十个成绩、成绩总个数、分段的5个区间申请内存单元,初始化数据段;将AX,BX,CX压栈,保留原始数据。选取第一个成绩,存入AX中,该数据除以10,得到商存入BX,判断商的所属区间,给所属区间加1,继续下一个,循环直到十个全部判断结束,pop出栈,得到属于各区间的成绩个数,程序结束。
2.源程序清单
2.源程序清单
datasegment
xdw 1ah
ydw 0ah
zdw 01h
maxdw ?
dataends ;数据段定义
codesegment
assume ds: data, cs: code
start:
mov ax, data
mov ds, ax ;初始化数据段
mov ax, x
cmp ax, y
《汇编语言程序设计》实验报告
实验名循环、分支、子程序设计实验室实验楼实验日期2014-06-09
一、实验目的及要求
1.熟悉命令格式,功能,加强对指令系统的理解
2.编写简单循环、选择、子程序的结构程序
3.单步跟踪调试,观察寄存器的变化和指令执行的结果
二、实验环境
硬件环境:一台微型计算机
软件环境:windows xp,debug环境,masm
2.源程序清单
datarea segment;定义数据段
buffer db 80 dup(?) ;预申请了以buffer为首地址的内存单元
flag db ?
datarea ends
prognam segment;定义编码段
main proc far
assume cs:prognam,ds:datarea
(5).初始数据段
(6).分别将AX,BX,CX,SI压栈,保留初始数据,

子程序练习题

子程序练习题

1. 运行以下程序,屏幕显示结果为_________。

STORE 10 TO X,YDO SUB1?? X,STR(Y,4)CANCELPROC SUB1Z=X+2*YX=X+10DO SUB2?? ZENDPROCPROC SUB2PRIVATE ZY=Y+30Z=20ENDPROCA. 20 20 40B. 30 20 40C. 30 10 30D. 20 10 402. 运行以下程序,屏幕显示结果为_________。

PRIVATE X,YX="安徽"Y="学院"DO SUB WITH X?X+YRETURNPROC SUBPARA X1LOCAL XX="联大"Y="合肥"+YRETURNA.安徽联大学院B.联大安徽学院C.联大合肥学院D.安徽合肥学院3.运行以下程序,屏幕显示结果为_________。

SET TALK OFFPUBLIC A1,A2A1=1A2=2DO PROG1??A1,A2PRIVATE A1A1=3A2=4??A1,A2RETURNA. 3 4 3 4B. 3 4 1 4C. 1 4 3 4D. 1 4 1 44.在 VFP 中,关于过程调用的叙述正确的是__________。

A.当实参的个数少于形参的个数时,多余的形参取逻辑假B.当实参的个数多于形参的个数时,多余的实参被忽略C.实参与形参的数量必须相等D.上面的 A 和 B 都正确5.以下程序执行后,屏幕显示结果是_________。

X1=1X2=2DO K1 WITH X1,X2?STR(X1,2),STR(X2,2)X1=1X2=2DO K1 WITH X1,X1+X2?STR(X1,2),STR(X2,2)RETURNPROC K1PARA W1,W2W1=W1*2W2=W2*2RETURNA. 2 4B. 2 4C. 2 4D. 4 82 2 2 6 13 2 2 6.如下程序执行后,结果为_________。

汇编程序练习

汇编程序练习
DATA
ENDS
;定义数据段结束
STACK
SEGMENT STACK
;定义堆栈段,这是组合类型伪指令,它规定在伪指令后须跟STACK类型名
DB 200 DUP(0)
;定义堆栈段为200个字节的连续存储区,且每个字节的值为0
STACK
ENDS
;定义堆栈段结束
CODE
SEGMENT
;定义代码段
ASSUME
DATA2 DB 0C1H, 36H, 9EH, 0D5H, 20H
DATAENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOVAX, DATA
MOVDS, AX
MOVCX, 5
MOVSI, 0
CLC
LOOPER:MOVAL,DATA2[SI]
ADCDATA1[SI],AL;与被加数相加
INCSI
DECCX
JNZLOOPER
MOVAH, 4CH
INT21H
CODEENDS
ENDSTART;源程序结束;
MOV
AH,4CH
;DOS功能调用语句,机器将结束本
INT
21H
程序的运行,并返回DOS状态
CODE
ENDS
;代码段结束
END
START
;整个程序汇编结束
第二题
(读懂下列程序,并补充注释)
要求将两个5字节十六进制数相加,可以编写出以下汇编语言源程序。
DATASEGMENT
DATA1 DB 0F8H, 60H, 0ACH, 74H, 3BH
汇编程序练习汇编语言练习题汇编程序汇编语言程序设计汇编小程序汇编程序100例什么是汇编语言程序反汇编程序汇编延时子程序mips汇编程序

《汇编语言程序设计》1~10章习题答案

《汇编语言程序设计》1~10章习题答案

《汇编语⾔程序设计》1~10章习题答案1.11.21.31.41.5 (字长 n=8)1.61.7(1) (2) (3) (4) (5)1.8 设补码长度为字节(即为8位)1.9(1) 21-(-18)= 15H-0EEH= 27H (2) 71- 36 = 47H- 24H= 23H (3) -5+ 120 =0FBH+ 78H= 73H (4) -10- 20 =0F6H- 14H=0E2H (5) -85-(-40)=0ABH-0D8H=0D3H 1.1057H,69H,6EH,64H,6FH,77H,73H,20H,39H,35H, 56H,69H,73H,75H,61H,6CH,20H,62H,61H,73H,69H,63HP26第⼆章习题·答案2.6 见P19堆栈:内存中以”先⼊后出”为原则存取、最⼤空间为64KB 的存储区域称之为堆栈栈底:栈区最⾼地址单元的前⼀个单元为栈底4017H:000AH=4017AH 4015H:002AH=4017AH 4010H:007AH=4017AH 说明了同⼀个物理地址可以⽤多个逻辑地址表⽰。

3.1(1) 寄存器寻址(2) 寄存器间接寻址, 物理地址=30700H(3) 变址寻址/寄存器相对寻址,物理地址=31804H(4) 基址寻址/寄存器相对寻址,物理地址=41700H(5) 基址变址寻址, 物理地址=30800H(6) 相对基址变址寻址, 物理地址=42504H3.2(1) 错:源不能是基址基址寻址。

(2) 错:源和⽬不能同时为内存单元。

(3) 错:直接给出的移位位数不能是3。

(4) 错:取反指令只能有⼀个操作数。

(5) 错:不能将⽴即数直接送⼊段寄存器。

(6) 错:⽬不能是段寄存器CS。

(7) 错:第⼀个操作数不能是⽴即数。

(8) 当VALUE1为字变量时,对;否则为错:源和⽬的类型(长度)不⼀致。

(9) 错:源和⽬不能同时为段寄存器。

汇编语言实验10

汇编语言实验10

计算机科学系实验报告(首页)一、实验目的:掌握子程序的编写和调用二、实验内容、程序清单及运行结果1.显示字符串问题显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。

我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色。

子程序描述名称:show_str功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。

参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79), (cl)=颜色,ds:si指向字符串的首地址返回:无就用举例:在屏幕的8行3列,用绿色显示data段中的字符串。

assume cs:codedata segmentdb 'Welcome to masm!', 0data endscode segmentstart: mov dh, 8 ; 行号mov dl, 3 ; 列号mov cl, 2 ; 颜色mov ax, datamov ds, ax ; 将数据段地址放入至ds中mov si, 0 ; 将si设置为数据段的偏移地址call show_strmov ax, 4c00hint 21hshow_str:……code endsend start2.解决除法溢出的问题问题前面讲过,div指令可以做除法。

当进行8位除法的时候,用al存储结果的商,ah存储结果的余数:进行16位除法的时候,用ax存储结果的商,dx存储结果的余数。

可是,现在有一个问题,如果结果的商大于ah 或ax所能存储的最大值,那么将如何?比如,下面的程序段:mov bh,1mov ax,1000div bh进行的是8位除法,结果的商为1000,而1000在ah中放不下,又比如,下面的程序段:mov ax,1000hmov dx,1mov bx,1div bx进行的是16位除法,结果的商为11000H,而11000H在ax中存放不下。

汇编作业和实验的程序题

汇编作业和实验的程序题

汇编精华实验题6.7 设有10个学生的成绩分别是76,69,84,90,73,88,99,63,100和80分。

试编制一个子程序统计60~69分,70~79分,80~89分,90~99分和100分的人数,分别存放到S6,S7,S8,S9和S10单元中。

data segmentscore db 76,69,84,90,73,88,99,63,100,80s6 db 0s7 db 0s8 db 0s9 db 0s10 db 0data endscode segmentassume cs:code, ds:datamain procstart:mov ax,datamov ds,axmov cx,10call allocdisp:mov dl,s6call displaymov dl,s7call displaymov dl,s8call displaymov dl,s9call displaymov dl,s10call displaymov ah,4chint 21hmain endp;----------------------------------------display procadd dl,30h;屏幕上显示的是ascii码,所以求出数字,然后转换成ascii码mov ah,02hint 21hretdisplay endp;----------------------------------------alloc procxor si,sicomp:cmp score[si],100 je is10cmp score[si],90 jge is9cmp score[si],80 jge is8cmp score[si],70 jge is7is6:inc s6Jmp l1is7:inc s7Jmp l1is8:inc s8Jmp l1is9:inc s9Jmp l1is10:inc s10Jmp l1L1:Inc siLoop compretalloc endpcode endsend start5.11从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示出计数结果。

汇编语言实验报告(子程序)

汇编语言实验报告(子程序)

西安财经学院信息学院
《汇编语言程序设计》 实验报告
实验名 子程序结构程序设计 实验室 实验楼403 实验日期 2013/06/09 一、实验目的及要求
1. 学习子程序的编写,主子程序的调用
2. 不同模块间程序的调用和调试
二、实验环境
硬件环境:一台微型计算机; 软件环境:windows 7 链接程序:LINK.EXE
调试环境:DOSBOX 虚拟平台。

三、实验内容
数据段中的
6个字符,“ABCDEF ”,调用子程序将其逐个显示出来。

子程
序的功能是显示一个字符。

四、实验过程
1. 通过编译程序、链接程序分别生成OBJ 和EXE 文件后,直接运行查看结果
如下:
2. 反汇编,查看程序的指令,如下所示:
姓名 学号 10051704 班级 计本1004班 指导教师 张娟
3. 用-d 查看数据段内存放的数据:
4. 单步执行
查看堆栈段的内容:继续单步执行:
五、源程序清单
程序源代码如下:
DATA SEGMENT
MAG DB ‘ABC DEF’
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: MOV AX, DATA
MOV DS, AX
MOV SI, 0
MOV CX, 6
LL: MOV DL, MAG[SI]
CALL MADD
INC SI
LOOP LL
MOV AH, 4CH
INT 21H
MADD PROC。

汇编原理 编程实践作业

汇编原理 编程实践作业

《汇编原理》编程实践报告一、内容从键盘输入10个数,存入变量BUF中,将每个单元的数据以ASCII码形式显示出来:例如,某单元数据为18(12H),则显示31H(数字1的ASCII码)、32H(数字2的ASCII 码)。

要求:(1)输入10个数用子程序实现(2)转换功能(二位16进制数转换为ASCII码)用子程序实现(3)显示功能(显示各个ASCII码)用子程序实现(4)主程序循环调用子程序实现转换和显示二、说明1、报告内容:程序流程图、源程序、运行结果抓图、分析总结2、格式要求:(1)A4纸张大小,除运行结果抓图外,可以手写。

(2)字迹工整、大小一致、报告整洁3、成绩评定:程序流程图(20%)、源程序(30%)、运行结果抓图(30%)、分析总结(20%)三、实践内容3.1、源码DATA SEGMENTBUF DB ?,?BUF1 DB ?BUF2 DB ?X DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,10L: CALL INPUTCALL CHANGEMOV DL,';'MOV AH,02HINT 21HLOOP LMOV AH,4CHINT 21HINPUT PROCMOV AH,01HINT 21HMOV BUF1,ALMOV AH,01HINT 21HMOV BUF2,ALLEA SI,BUFMOV BL,BUF1MOV [SI],BLINC SIMOV BL,BUF2MOV [SI],BLRETINPUT ENDPCHANGE PROCLEA SI,BUFMOV AL,[SI]SUB AL,'0'MOV BL,10MUL BLINC SIMOV BL,[SI]SUB BL,'0'ADD AL,BLMOV X,ALMOV CL,4SHR AL,CL ADD AL,30H MOV BL,AL MOV CL,4 SHR AL,CL ADD AL,30H CALL SHOW AND BL,0FH ADD BL,30H MOV AL,BL CALL SHOW MOV DL,'H' MOV AH,02H INT 21H MOV AL,X MOV BL,X AND AL,0FH CMP AL,09H JA L1ADD AL,30H MOV CL,4 SHR AL,CL ADD AL,30H CALL SHOW AND BL,0FH ADD BL,30H MOV AL,BLCALL SHOWJMP L2L1: ADD AL,37HMOV BL,AL MOV CL,4SHR AL,CLADD AL,30HCALL SHOWAND BL,0FHADD BL,30HMOV AL,BLCALL SHOW L2: MOV DL,'H'MOV AH,02HINT 21HRET CHANGE ENDPSHOW PROCMOV DL,ALMOV AH,02HINT 21HRET SHOW ENDPCODE ENDSEND START3.2、结果抓图3.3、总结与分析通过本次实践,我初步掌握了如何将变量中每个单元的数据以ACSII码的形式输出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验九循环程序设计
1、实验目的
使用宏汇编程序MASM汇编,综合运用各种指令进行循环程序的编程练习,实现题目功能。

2、实验要求
通过编程练习,掌握循环程序设计。

3、实验内容
编程完成下面功能。

在内存DAT1中有10个有符号字节数据,个数存放在COUNT单元,编写程序将这些数据进行从小到大排序。

将排序的结果显示出来(验证是否排序正确)。

显示考虑到数的正负。

负数前面加-号,显示完一个数据用空格隔开。

用16进制显示10进制显示都可。

4、实验学时:4学时。

填写实验报告(后附模板),上传到FTP服务器。

贵州民族大学信息工程学院
计算机科学与技术系上机实验报告。

相关文档
最新文档