大工19秋《汇编语言程序设计》大作业题目及要求

合集下载

大工19秋《汇编语言程序设计》在线作业3满分答卷

大工19秋《汇编语言程序设计》在线作业3满分答卷

大工19秋《汇编语言程序设计》在线作业3试卷总分:100 得分:100一、单选题 (共 10 道试题,共 50 分)1.假设(EAX),(EBX),(DS)=0010H,试问MOV ECX,[EAX+EBX]指令访问内存的物理地址是()。

ABCD[标准参考解析]正确选择是:D2.阅读下面的程序片段。

(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL (4)SBB AH,BH(5)XOR AL,01H (6)ADC AX,0执行该程序片段后:(AX)等于()。

A.BCCEHB.A9CFHC.A9CEHD.0[标准参考解析]正确选择是:C3.阅读下面的程序片段。

(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL (4)SBB AH,BH(5)XOR AL,01H (6)ADC AX,0执行该程序片段后:CF等于()。

A.BB.AC.1D.0[标准参考解析]正确选择是:D4.阅读下面的程序片段。

(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL (4)SBB AH,BH(5)XOR AL,01H (6)ADC AX,0执行该程序片段后:OF等于()。

A.CB.BC.1D.0[标准参考解析]正确选择是:D5.下面指令执行后,(1)DAW DW 2A05H(2)DAB DB 0FAH (3)MOV AL,BYTE PRT DAW (4)SUB DAB,AL 变量DAB中的内容是()。

A.0F6HB.0F5HC.0E65H。

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

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

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

大工19秋《汇编语言程序设计》大作业题目及要求

大工19秋《汇编语言程序设计》大作业题目及要求

学习中心:专业:年级:年春/秋季学号:学生:题目:1.谈谈你对本课程学习过程中的心得体会与建议?2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。

《汇编语言程序设计》课程设计注意:从以下5个题目中任选其一作答。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言作业提交:大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东101410013979浙江台州奥鹏学习中心[1]VIP)以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。

如下图所示。

注意事项:独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!题目一:进制转换程序要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:比如可设计二进制转化十六进制的算法,简单介绍该算法的基本思想,100字左右即可。

(3)算法程序框图:绘制流程图或原理图,从算法的开始到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的含义,ADD指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!题目二:冒泡排序算法要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:简单介绍冒泡排序算法的基本思想,至少100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始到结束的程序框图。

(4)主要函数代码:列出算法的具体代码,如讲一个首地址为A的N字数组,编制程序将该数组中的数据按照从大到小排序。

(5)列出算法中使用指令的含义,比如解释MOV指令的含义,CMP指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!题目三:设立标志位算法要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

大工19秋《汇编语言程序设计》在线作业2[学习资料]

大工19秋《汇编语言程序设计》在线作业2[学习资料]

【奥鹏大连理工】大工19秋《汇编语言程序设计》在线作业2试卷总分:100 得分:100一、单选题 (共 10 道试题,共 50 分)1.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW $-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,BX寄存器中的内容为()。

A.19B.18C.17D.16[参考提示:请参看课本知识,回答本题]答案解析:B2.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW $-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,AH寄存器中的内容是()。

A.43HB.42HC.01HD.00H[参考提示:请参看课本知识,回答本题]答案解析:D3.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW $-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,AL寄存器中的内容是()。

A.43HB.42HC.01HD.00H[参考提示:请参看课本知识,回答本题]答案解析:A4.现有如下数据段(1)DATA SEGMENT(2)ARRAY1 DB 1,26,‘3456’(3)ARRAY2 DW 7,89H,10(4)VAL EQU ARRAY2-ARRAY1(5)DATA ENDS请问:该数据段已占有()字节的存储空间。

A.8B.13C.12D.11[参考提示:请参看课本知识,回答本题]答案解析:C5.假设数据段定义如下:(1)DA1 DW ’C’,’D’(2)DA2 DB 18 DUP(?)(3)DA3 DW $-DA2(4)……(5)MOV BX,DA3(6)MOV AX,DA1上述指令执行后,BX寄存器中的内容为()H。

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

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

第一章. 习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 11111111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76(6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。

大工20秋《汇编语言程序设计》大作业答案

大工20秋《汇编语言程序设计》大作业答案

学习中心:专业:年级:年春/秋季学号:拿答案more学生: 2502533676题目:题目三:设立标志位算法1.谈谈你对本课程学习过程中的心得体会与建议?在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟现在高级语言这么发达,而且运用起来灵活易懂,像汇编这种低级语言又难又不易学。

不过经过一个学期的学习,我发现汇编语言在当今这种高速发展的社会的作用和地位,让我们能够正确的认识汇编语言的精华,正确对待这么课。

在后来的学习中我发现其实汇编不是很难学,其实学汇编就像学其他的高级语言一样,高级语言要求对语言非常了解。

在学汇编的过程中,我们最重要的就是要掌握汇编语言中的指令的一些基本用法。

当然要能够真正的了解其中的内涵,这样我们在实际的编程中也能够像运用高级语言一样灵活的变通。

汇编语言作为一种低级程序设计语言,既然是低级所以应该是最底层的,与我们计算机内部的结构联系应该联系很密切,而且在我们学习中也深刻的了解到了这一点2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。

《汇编语言程序设计》课程设计题目三:设立标志位算法要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:试编制一个程序,从键盘中输入一行字符,要求第一个字符必须是空格,如果不是,则退出程序。

如果是,开始接受键入的字符并顺序存放在首地址为BUFFER的缓冲区中(空格符不存入),直到接收到第二个空格符时退出程序。

简单介绍该算法的基本思想,至少100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的含义,CMP指令的含义,至少撰写十个指令。

汇编语言课程设计题目与要求

汇编语言课程设计题目与要求

汇编语言课程设计题目一、课程设计要求:1.每人一题,同学之间可以协商更换,但是不允许两人或两人以上的同学完成同一题目。

2.分析设计要求,给出解决方案,建立必要的数据结构,然后设计总体流程(包括界面)、详细设计必要的算法,并最终显示结果。

3.提交设计报告,包括设计思想流程、主要数据结构、程序清单、运行结果、设计心得、参考资料等(报告格式见附件)。

4.严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。

5.所提交源程序应是能够运行通过的完整程序。

6. 成绩标准:优秀,100-90;良好,89-80;中等,79-70;及格,69-60;不及格,60以下。

7. 请借助互联网检索所需相关技术,尤其是要积极借鉴开源代码,但一定要调试到可以运行演示,否则按复制论处。

二、课程设计题目题目一定时/计数技术应用程序设计设计一个数字钟,在屏幕上显示分:秒(mm:ss)。

按下非空格键开始计时,并显示00:00,每过1 秒,ss 增1,到60 秒mm 增1,到60 分就是1 小时。

经过1 小时后又回到00:00 重新计数。

当按下空格键时,程序返回DOS,数字钟消失。

题目二信息检索程序设计完成一个信息检索系统。

在数据区,有9 个不同的信息,编号0-8,每个信息包括40 个字符。

从键盘接收0-8 之间的一个编号,然后再屏幕上显示出相应编号的信息内容,按“q”键退出。

题目三图形变换程序设计完成一个图形变换的程序,系统具有4 种可选择的功能,按字母“Y”画一个用点组成的圆;按字母“S”画一个用不同颜色填充的三角形;按字母“Z”画一个用不同颜色填充的矩形;按“q”键退出。

题目四代码转换程序设计完成一个字母或数制之间的转化程序,主程序分别具有5 种可选择的子功能,按相应的字符可分别进入相应的子功能并在屏幕上显示结果,按“q”键退出。

5 种可选择的子功能分别为:1)实现小写字母向大写字母的转换2)实现大写字母向小写字母的转换3)实现二进制数向十六进制数的转换4)实现十六进制数向二进制数的转换5)实现十六进制数向十进制数的转换题目五中断处理程序设计编写一个中断处理程序,要求在主程序运行过程中,每隔20 秒响铃一次,同时在屏幕上显示信息”The bell is ring!”,按键后恢复原状。

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

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

第一章. 习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=11.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。

大工《汇编语言程序》大作业资料

大工《汇编语言程序》大作业资料

大连理工大学远程与继续教育学院《汇编语言程序设计》课程设计题目:进制转换程序1.谈谈你对本课程学习过程中的心得体会与建议?汇编语言程序设计是我们计算机专科的一门专业课。

本课程是面向机器的一门编程语言课。

在对汇编语言的学习过程中,可以对计算机组成原理有更深入的了解,同时掌握汇编语言对于某些硬件编程比如单片机开发和嵌入式系统的开发应用也是必不可少的。

汇编语言相比于其他高级语言明显的优点就是运行速度快,而缺点就是需要兼顾机器本身的硬件结构特点进行编程,因此学习本课程要多实践多思考。

通过本课程的学习可以对汇编语言有一个整体的把握和认识。

当我刚开始选择这个题目是因为课本上有一个相近的代码转换,所以感觉这个题目应该很好写。

可是等到真正动手的时候就感到了困难。

首先是对字符串的输入输出的处理,解决不了就改成了字母大小写转换是每次只输入一个字母,然后根据其大小写转换,如大写就转换成小写,否则反之。

然而在随后的进制转换中用遇到了同样的问题,发现这是一个不能不解决的问题,随后查阅了资料才解决。

随后实在数值转换过程中对模块的设计上又出现了问题。

最初的构想是设计六个模块分别对应相应的数值转换功能。

可是在三个写好以后发现了下面要写的代码有很多重复的地方,于是就把这些重复的代码定义成了子函数来使用然后发现将程序按照输入、输出的不同来分模块,以BX作为连接,比原来的程序更为简洁,逻辑上也更加清楚,有种豁然开朗的感觉。

在改进程序的过程中感到非常有成就感。

在编写代码的过程中让我充分感受到了不同编程语言之间的差别。

对与高级语言来说或许是很简单的一个程序或者只需要调用已有的函数库,可是对于汇编来说却要写上几十行甚至更多的代码。

可是更加深刻的了解了寄存器、存储器之间的数据流向,因为每个考虑不周都会导致一大堆的错误出现,常常令人感到一种无力感,想要放弃。

当程序一步步接近完成,看着子函数一个个都运行成功,再组合到一起,那种喜悦是无与伦比,之前所受到的苦楚又是那么的微不足道。

总汇编语言程序设计期末大作业。

总汇编语言程序设计期末大作业。

汇编语言程序设计期末大作业:编写一完整的汇编语言源程序,实现从键盘输入一个班(不少于10人)的学生记录(学号:8位数字、姓名:不多余10个英文字符,语文:0-100的整数、数学:0-100的整数、英语:0-100的整数)后,(1)将输入的记录保存在C盘根目录下名为stuscore.dat的文件中;(2)按照各科成绩总分先高后低的顺序输出全部学生记录和排名顺序;(3)输出总分高于班平均总分的全部学生记录。

要求:元月4日前提交一份纸质报告(班长统一收齐)。

大作业格式:1.标题:汇编语言程序设计期末大作业2.作业题目:(上述)3.算法分析(流程图)4.实现代码(必须含注释)5.实验结果(汇编、连接、运行的截图)6.总结代码实现student struct ;定义结构Snumber db 11,0,11 dup(?)Sname db 11,0,11 dup(?)English db 4,0, 4 dup(?)Chinese db 4,0, 4 dup(?)Math db 4,0, 4 dup(?)Sum db 4,0, 4 dup(?)student ends;数据段data segmentmessMenu db '----------------The Homework of Assembler-----------------$'messMenu1 db '----------Name:TU LIN No:8000110028--------------$'messNext db'--------------------------------------------------------------------------------$'messName db 'Please input the student name(<11):$'messNum db 'Please input the student number(<11):$'messEnglish db 'Please input the English score:$'messChinese db 'Please input the Chinese score:$'messMath db 'Please input the Math score:$'mess1 db 'name:$'mess2 db 'number:$'mess3 db 'English:$'mess4 db 'Chinese:$'mess5 db 'Math:$'messSumScore db 'SumScore:$'MessTab db 09,'$' ;Tab 用于排列对齐StudAddress dw 10 dup(?) ;存各学生的偏移地址EnglishScore db 10 dup(?) ;存学生英语成绩的十进制数ChineseScore db 10 dup(?) ;存学生语文成绩的十进制数MathScore db 10 dup(?) ;存学生数学成绩的十进制数Average dw ?Buf db 6 dup(?)SumScore dw 10 dup(?) ;用于记录每个学生总分NumbersOfStudent db 0Stu student 10 dup(<>)SumRank db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9FName db 'C:\StuScore.dat', 0;文件FileHandle dw ?;文件句柄EndOfFile dw 0ffhOtherLine db 0ah, 0dh, '$'FileSpace db " "data ends;堆栈段stack segmentdb 100h dup(?)stack ends;代码段code segmentassume cs:code,ds:data,ss:stackstart: mov ax,datamov ds,ax ;将数据段首地址传给dsmov ax,stackmov ss,ax ;将堆栈段首地址传给ssmov sp,0call Endlinelea dx,messMenumov ah,09hint 21hcall Endlinelea dx,messMenu1mov ah,09hint 21hcall Endlinelea si,Stu ;取student的首地址给simov cx,10InputStu:call GetStudentlea dx,messNextmov ah,09hint 21hadd si,50loop InputStu ;输出循环结束lea si,Stucall GetEnglishScorecall GetChineseScorecall GetMathScorecall Stop ;程序运行停止一下,按回车键继续执行 call Writetofilecall stopcall SumAveragecall GetSumcall GetAddresscall SortStudentcall Stop ;程序运行暂停一下,按回车键,继续执行call ShowStumov ah,4chint 21h;============================================================;子程序名:GetStudent;功能:录入学生信息;============================================================ GetStudent proc nearpush sipush dxpush axpush cx ;子程序保护现场lea dx,messNamemov ah,9int 21hlea dx,[si].Snamemov ah,0Ahint 21hcall Endlinelea dx,messNummov ah,9int 21hlea dx,[si].Snumbermov ah,0Ahint 21hcall Endlinelea dx,messEnglishmov ah,9int 21hlea dx,[si].Englishmov ah,0Ahint 21hcall Endlinelea dx,messChinesemov ah,9int 21hlea dx,[si].Chinesemov ah,0Ahint 21hcall Endlinelea dx,messMathmov ah,9int 21hlea dx,[si].Mathmov ah,0Ahint 21hcall Endlinepop cxpop axpop dxpop siretGetStudent endp;============================================================ ;子程序名:TureShow;功能辅助子程序ShowStu,用于输出字符串;============================================================ TureShow proc nearpush dx ;保护相关寄存器push cxpush bxpush axmov bx,dx ;将bx指向缓存区的地址xor cx,cxmov cl,[bx+1] ;cl存放了缓存区录入的字符数LoopTS:mov dl,[bx+2] ;从第三个偏移地址开始显示mov ah,2 ;调用单个字符输出中断int 21hinc bxloop LoopTSpop axpop bxpop cxpop dxretTureShow endp;============================================================ ;子程序名:ShowStu;功能:显示学生信息记录;============================================================ ShowStu proc nearpush cxpush axpush dxpush sipush di ;保护现场call Endlinelea di,SumScorelea bx,StudAddressmov cx,10Loop1: mov si,word ptr[bx]lea dx,mess1mov ah,09hint 21hlea dx,[si].Snamecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess2mov ah,09hint 21hlea dx,[si].Snumbercall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess3mov ah,09hint 21hlea dx,[si].Englishcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess4mov ah,09hint 21hlea dx,[si].Chinesecall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,mess5mov ah,09hint 21hlea dx,[si].Mathcall TureShowcall MessTb ;输出1个Tab 用于排序对齐lea dx,messSumScoremov ah,09hint 21hmov ax,[di]call Outputcall Endlineadd bx,2add di,2loop Loop1lea dx,messNextmov ah,09hint 21hpop dipop sipop dxpop axpop cxretShowStu endp;============================================================= ;子程序名:Endline;功能:回车换行;============================================================= Endline proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,2 ;回车mov dl,0ahint 21hmov ah,2 ;换行mov dl,0dhint 21hpop cxpop dxpop axretEndline endp;=============================================================;子程序名GetEnglishScores:;功能:将得到的指定个学生的分数以十进制保存到EnglishScore缓冲区中;============================================================= GetEnglishScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使si指向第一个学生的偏移地lea bp,EnglishScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores0:push cx ;保护外循环的CX值lea bx,[si].English ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore0:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到di,且将高位di的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来di中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore0mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区EnglishScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores0pop bppop axpop bxpop cxpop dxpop sipop diretGetEnglishScore endp;=============================================================;子程序名GetChineseScore:;功能:将得到的指定个学生的分数以十进制保存到ChineseScore缓冲区中;============================================================= GetChineseScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,ChineseScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores1:push cx ;保护外循环的CX值lea bx,[si].Chinese ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore1:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore1mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区ChineseScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores1pop bppop axpop bxpop cxpop dxpop sipop diretGetChineseScore endp;=============================================================;子程序名GetMathScore:;功能:将得到的指定个学生的数学分数以十进制保存到MathScore缓冲区中;============================================================= GetMathScore proc nearpush di ;保护相关寄存器push sipush dxpush cxpush bxpush axpush bplea si,Stu ;使di指向第一个学生的偏移地lea bp,MathScore ;使bp指向以十进制存学生分数的地址mov cx,10 ;共有指定个学生LoopScores2:push cx ;保护外循环的CX值lea bx,[si].Math ;使bx指向学生字符分数缓冲区xor di,dixor cx,cxmov cl,[bx+1] ;学生字符分数缓冲区的字符数即使循环次数LoopScore2:mov al,[bx+2] ;从第三个偏移地址开始sub al,30h ;得到一个十进制值xor ah,ahxchg ax,di ;使其暂存到si,且将高位si的值乘10push si ;保护寄存器的原值push dxmov si,10mul si ;将si乘10,乘积低位保存在axpop dxpop sixchg ax,di ;将原来si中低位的值与高位的值ax交换回来add di,ax ;至此又录入一位十进制数inc bxloop LoopScore2mov ax,dimov ds:[bp],al ;将得到的十进制分数存入保存十进制分数缓冲区MathScore中add si,50 ;使di指向下一个学生的偏移地址inc bp ;使bp指向下一个保存十进制分数缓冲区的下一个单元,以保存下一个学生的分数pop cx ;弹出外循环的CX值loop LoopScores2pop bppop axpop bxpop cxpop dxpop sipop diretGetMathScore endp;==============================================================;子程序名:Writetofile;功能:用于创建文件并且存储学生信息;============================================================== Buildfile :push axpush cxpush dxmov ah, 3chmov cx, 00lea dx, FNameint 21hjc CreateFileErrormov FileHandle, axjmp CreateFileOkCreateFileError:mov ah, 09hmov dx, offset CreateFileErrorint 21hCreateFileOk:pop dxpop cxpop axretWriteToFile:push axpush bxpush cxpush dxpush dipush silea di, [si].SNamemov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx,FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SNumbermov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].ChineseScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].MathScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].EnglishScore mov dx, diadd dx, 2mov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteSpacelea di, [si].SumScore mov dx, dimov cl, [di+1]mov ch, 0mov bx, FileHandlemov ah, 40hint 21hjc WriteFileErrorcall WriteEndLinejmp WriteFileOkWriteFileError:lea dx,WriteFileErrormov ah, 09hint 21hWriteFileOk:pop sipop dipop dxpop cxpop bxpop axret;******************************************************************** WriteSpace:mov cx, 2lea dx, FileSpacemov bx, FileHandlemov ah, 40hint 21hret;******************************************************************** WriteEndLine:mov cx, 2lea dx, OtherLinemov bx, FileHandlemov ah, 40hint 21hretCloseFile:mov ah, 40hmov bx, FileHandlemov cx, 2lea dx, EndOfFileint 21hmov ah, 3ehmov bx, FileHandleint 21hret;============================================================== ;子程序名:GetSum;功能:用于计算出每个学生的各科成绩的总分;============================================================== GetSum proc nearpush axpush dipush sipush bxpush cxlea di,EnglishScorelea si,SumScoremov cx,10mov al,0LoopSum:mov ah,0mov al,[di]mov word ptr[si],axinc diadd si,2loop LoopSumlea di,ChineseScorelea si,SumScoremov cx,10mov al,0LoopSum1:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum1lea di,MathScorelea si,SumScoremov cx,10mov al,0LoopSum2:mov ah,0mov al,[di]add word ptr[si],axinc diadd si,2loop LoopSum2pop cxpop bxpop sipop dipop axretGetSum endp;============================================================== ;子程序名:SumAverage;功能:用于计算出平均成绩,并输出总分高于平均分的学生记录;============================================================== SumAverage proc nearpush axpush bxpush cxpush dxpush simov cl, NumbersOfStudentmov ch, 0mov bx, cxmov ax, 0mov dx, 0mov si, offset SumScoreAverageLoop:add ax, word ptr [si]adc dx, 0add si, 2loop AverageLoopdiv bxmov Average, ax;输出高于平均成绩的同学mov dx, offset ShowBigThanAveragemov ah, 09hint 21hmov cl, SNumbermov ch, 0mov di, 0mov si, 0ShowBigThanAverage:mov ax, SumScore[si]cmp ax, Averagejl ShowBigOkmov dl, SumRank[di]mov al, type studentmul dlmov bx, axcall Outputadd si, 2inc diloop ShowBigThanAverageShowBigOk:mov dx, offset OtherLinemov ah, 09hint 21hpop sipop dxpop cxpop bxpop axretSumAverage endp;============================================================= ;子程序名:Output;功能:将ax中的二进制以十进制形式输出;============================================================== Output proc nearpush dipush bxpush axpush dxlea di,Bufadd di,6mov byte ptr[di],'$'mov bx,10CHANGE:dec dimov dx,0div bxadd dl,30hmov byte ptr[di],dlcmp ax,0jnz CHANGEmov dx,dimov ah,09hint 21hpop dxpop axpop bxpop diretOutput endp;============================================================= ;子程序名:GetAddress;功能:将指定个学生的偏移地址顺序保存到StudAddress;============================================================= GetAddress proc nearpush si ;保护相关寄存器push bxpush cxlea si,Stu ;使di指向第一个学生的偏移地址lea bx,StudAddress ;使bx指向存学生偏移地址的缓冲区mov cx,10 ;共有指定个学生LoopAdd:mov word ptr[bx],word ptr siadd bx,2 ;使bx指向存学生偏移地址的缓冲区的下一个地址add si,50 ;使di指向下一个学的生偏移地址loop LoopAddpop cxpop bxpop diretGetAddress endp;============================================================= ;子程序名:SortStudent;功能:根据学生分数进行排序;用冒泡法根据学生分数对分数从大到小排序;同时将对应的偏移地址进行排序;============================================================= SortStudent proc nearpush dxpush cxpush bxpush axpush dipush simov cx,10dec cxLoopChange0:push cx ;保护外循环的CX值lea bx,SumScore ; bx指向学生分数偏移地址lea si,StudAddress ;si指向存学生偏移地址的地址LoopChange1: ;将学生分数和下一个学生分数分别送入al,dl并比较大小;若当前学生分数小于下一个分数要交换其分数mov dx,word ptr[bx+2] ;此分数对应的学生的偏移地址mov ax,word ptr[bx]cmp ax,dxja EndExchange ;若大于则转而比较下两个分数值;交换偏移地址mov ax,word ptr [si+2] ;指定向ax中传入2个字节数据mov dx,word ptr [si]mov [si],axmov [si+2],dx;交换分数值mov ax,word ptr[bx+2]mov dx,word ptr[bx]mov word ptr[bx],axmov word ptr[bx+2],dxEndExchange:add si,2 ;指向下一个学生偏移地址的地址add bx,2 ;指向下一个存学生分数的地址loop LoopChange1pop cx ;保护外循环的CX值loop LoopChange0pop sipop dipop axpop bxpop cxpop dxretSortStudent endp;=============================================================;子程序名:MessTb;功能:输出1个Tab键;============================================================= MessTb proc nearpush dx ;保护相关寄存器push axlea dx,MessTab ;指向输出1个Tab键缓冲区mov ah,9 ;调用字符串输出程序int 21hpop axpop dxretMessTb endp;=================================================================== ;子程序名:Stop;功能是让程序停止运行一下,输入回车键继续执行;=================================================================== Stop proc nearpush ax ;保护相关寄存器push dxpush cxmov ah,1 ;回车int 21hpop cxpop dxpop axretStop endpcode endsend start。

大工19春《汇编语言程序设计》在线作业3【答案】

大工19春《汇编语言程序设计》在线作业3【答案】

大工19春《汇编语言程序设计》在线作业3
键盘I/O对应16H号中断。

T.对
F.错
正确答案:A
在汇编语言中,宏是源程序中的一段有独立功能的程序代码,只需要在源程序中定义一次就可以多次调用。

T.对
F.错
正确答案:A
MACRO和ENDM是不合法的关键字搭配。

T.对
F.错
正确答案:B
经宏定义定义后的指令就可以在源程序中调用,这种对宏指令的调用称为宏调用。

T.对
F.错
正确答案:A
LOCAL伪操作只能在宏定义内部使用,而且它必须是MACRO伪操作后的第一个语句。

T.对
F.错
正确答案:A
REPT和ENDM是一对不合法的伪操作。

T.对
F.错
正确答案:B。

大工19秋《汇编语言程序设计》在线测试3 辅导答案

大工19秋《汇编语言程序设计》在线测试3 辅导答案

大工19秋《汇编语言程序设计》在线测试3一、单选题(共 10 道试题,共 40 分。

)1. 阅读如下程序段:(1)ADRR DB XXH,XXH,……,XXH (2) NUM EQU $-ADRR (3)RETT DB ?(4)…(5)MOV CX,NUM (6)MOV BX,-1 (7)DON: (8)INC BX (9)CMP ADRR[BX],0 (10)LOOPZ DON (11)JNZ NEXT (12)MOV BL,OFFH (13)NEXT: (14)MOV RETT,BL (15)HLT结束后,该程序完成的功能是()。

A. 希尔排序算法B. 在以Adrr为起始地址的数组中查找第一个非0数据C. 在以Adrr为起始地址的数组中查找字符AD. 以上都不对正确答案:B2. MOV [BX],DL指令是将DX寄存器()地址送入BX中。

A. 低8位B. 高8位C. 低32位D. 高32位正确答案:A3. (1)FUNCTION MACRO P1,P2,P3(2)MOV AX,P1 (3)P2 P3,1 (4)ENDM 通过调用语句FUNCTION 101H,DEC,AX调用之后,AX寄存器中的内容为()。

A. 100HB. 99HC. 98HD. 101H正确答案:A4. 阅读下面的程序片段。

(1)MOV AX,723AH(2)MOV BX,0C86BH (3)SUB AL,BL (4)SBB AH,BH (5)XOR AL,01H (6)ADC AX,0执行该程序片段后:CF 等于()。

A. AB. BC. 0D. 1正确答案:C5. 阅读如下程序段,假设数组中所有数据均为0:(1)ADRR DB XXH,XXH,……,XXH (2) NUM EQU $-ADRR (3)RETT DB ?(4)…(5)MOV CX,NUM (6)MOV BX,-1 (7)DON: (8)INC BX (9)CMP ADRR[BX],0 (10)LOOPZ DON (11)JNZ NEXT (12)MOV BL,OFFH (13)NEXT: (14)MOV RETT,BL (15)HLT结束后,RETT字节单元中的内容是()。

汇编语言程序大作业(含源代码)

汇编语言程序大作业(含源代码)

汇编语言程序大作业程序简介本程序的功能简单,是可以根据用户从键盘的不同输入,回显在显示器上不同的结果。

其实现的功能是当用户从键盘输入01至12之间的数时(一年12个月),程序能给用户返回其相应的月份的英文缩写符;程序的运行过程介绍1)当从编程环境按下运行按钮之后,屏幕上会显示如下一个窗口:图(1)提示使用者输入01至12之间的任一个两位数字,这里可以随意输入01至12之间的一个两位数字;2)这里从键盘输入如下图所示的数字接着按下回车键,则会显示用户所输入的数字的相应的月份的英文缩写,如下图所示:程序功能分析:本程序功能简单,仅有输入输出功能,即从键盘上输入一些数字并回车之后给使用者提示相应的信息,下面介绍程序中相应功能是如何实现的:第一,根据常规本程序没有涉及到子程序的概念,仅仅有照常的数据段和代码段而且同时把数据段定义为附加段;第二,在代码段里共有四个部分分别为主程序代码部分键盘输入部分设置部分和输出部分;下面分别介绍代码段里的各个部分代码段里的主程序部分:main proc farpush ds ;为返回而把ds保存到堆栈段sub ax,ax ;清空ax寄存器的内容push ax ;把0(清空后的ax的内容)推入堆栈段mov ax,DATASG ;mov ds,ax;把ax作为中间变量给数据段寄存器送入内存中数据段的首地址mov es,ax ;同时把该首地址送给附加段call input ;调用子程序input(输入子程序)call locate ;调用子程序locate(设置子程序)call display ;调用子程序display(输入子程序)ret ;返回main endp ;main主程序结束代码段里的键盘输入部分:input proc nearpush dx ;为保护dx而把其内容推入堆栈段lea dx,DSPLY1 ;为了让使用者知道程序一开始要输入什么,这里将把内存中数据段里的DSPLY1变量的首地址送给dx寄存器(专业的说法就是把DSPLY1的偏移地址送给了dx数据寄存器)mov ah,09h ;为了能显示DSPLY1变量里的字符串,故把09送给ah并之后中断一次int 21h ;DOS中断mov ah,0ah ;换行lea dx,MONIN ;把MONIN的偏移地址送给寄存器dxint 21h ;DOS中断mov ah,MONIN+2 ;把MONIN作为首地址后再加2以后的存储单元内容送ah mov al,MONIN+3 ;把MONIN作为首地址后再加3以后的存储单元内容送alxor ax,3030h ;清空ax的相应位置cmp ah,00 ;ah和00进行比较(主要确定键盘所输入的数字是否在01-09之间)jz return ;若ah的内容确实为0则跳到return标签处sub ah,ah ;若ah的内容不为零则清空ahadd al,10 ;之后al的内容相加10存入alreturn:pop dx ;重新从堆栈段弹出dxret ;返回input endp设置部分locate proc nearpush si ;保存si寄存器的内容(推入堆栈段)push di ;保存di寄存器的内容(推入堆栈段)push cx ;保存cx寄存器的内容(推入堆栈段)lea si,MONTAB ;把MONTAB的偏移地址送给si寄存器dec al ;al的内容减一(为建立一个表)mul THREE ;ax和数据段中的THREE变量进行相乘add si,ax ;之后si和ax的内容进行相加mov cx,03 ;把03送入cx寄存器cld ;为循环的方向做确定(定义方向为从左到右进行扫描)lea di,ALFMON ;把数据段中变量ALFMON的偏移地址送给di寄存器rep movsb ;进行以字节为单位的扫描pop cx ;从堆栈段弹出cxpop di ;从堆栈段弹出dipop si ;从堆栈段弹出siret ;返回locate endp输出部分display proc nearpush dx ;为保护dx的内容而把dxlea dx,DSPLY2 ;为了解释最后显示的结果,故把建立在数据段里的DSPLY2变量的首地址送给了dx寄存器,也就是把DSPLY2的偏移地址送给了dx寄存器mov ah,09h ;为了能够显示字符串故把09h送给了ah,并之后中断了一次int 21h ;DOS中断lea dx,ALFMON ;把ALFMON的偏移地址送给dx寄存器mov ah,09 ;为了屏幕上显示字符串int 21hpop dx ;从寄存器弹出dxretdisplay endp下面介绍数据段的定义:DATASG SEGMENT PARA 'DATA'THREE DB 3MONIN DB 3,4 DUP(?)ALFMON DB'???','$'MONTAB DB'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DE C'DSPLY1 DB'Plaese input two numbers(01-12): $'DSPLY2 DB'Your input month is: $'DATASG ENDS本程序的缺点是没办法连续地输入来确定不同的月份,而且是简单的基本输入输出功能的程序,尽管如此本人还是设计出了此程序。

大工19秋《汇编语言程序设计》在线作业1[学习资料]

大工19秋《汇编语言程序设计》在线作业1[学习资料]

【奥鹏大连理工】大工19秋《汇编语言程序设计》在线作业1
试卷总分:100 得分:100
一、单选题 (共 10 道试题,共 50 分)
1.设(SP)=100H,(AX)=0FFFFH 按顺序执行下列语句后(1)STC(2)PUSH AX(3)ADC AX,0(4)PUSH AX(5)POP BX,(BX)等于()。

A.F
B.2
C.1
D.0
[参考提示:请参看课本知识,回答本题]
答案解析:D
2.设(SP)=100H,(AX)=0FFFFH 按顺序执行下列语句后(1)STC(2)PUSH AX(3)ADC AX,0(4)PUSH AX(5)POP BX,(SP)等于()。

A.0FFH
B.0FEH
C.0EEH
D.00FA
[参考提示:请参看课本知识,回答本题]
答案解析:B
3.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是()。

A.表示该数为偶数
B.表示结果中含2的个数为偶数
C.表示结果中含1的个数为奇数
D.表示结果中低八位含1的个数为偶数
[参考提示:请参看课本知识,回答本题]
答案解析:D
4.下列对CL寄存器的内容乘以4的正确操作是()。

A.SHL CL,1
B.ROLS CL,4
C.MUL 4
D.MOV CL,2
[参考提示:请参看课本知识,回答本题]
答案解析:A
5.下面各传送指令中,错误的是()。

A.MOV DS,AX
B.MOV [DI],[SI]
C.MOV AX,BX
D.MOV AL,'A'。

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

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

第一章. 习题1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 32767答:(1) 369=1 0111 0001B=171H(2) 10000=10 0111 0001 0000B=2710H(3) 4095=1111 1111 1111B=FFFH(4) 32767=111 1111 1111 1111B=7FFFH1.2将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 11111111答:(1) 10 1101B=2DH=45(2) 1000 0000B=80H=128(3) 1111 1111 1111 1111B=FFFFH=65535(4) 1111 1111B=FFH=2551.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 1234答:(1) FAH=1111 1010B=250(2) 5BH=101 1011B=91(3) FFFEH=1111 1111 1111 1110B=65534(4) 1234H=1 0010 0011 0100B=46601.4完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F答:(1) 3A+B7H=F1H=241(2) 1234+AFH=12E3H=4835(3) ABCD-FEH=AACFH=43727(4) 7AB×6FH=35325H=2178931.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。

(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76(6) -85-(-76)答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0(2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0(3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0(4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1(5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1(6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=01.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF答:(1) D8H表示的带符号数为 -40,D8H表示的无符号数为216;(2) FFH表示的带符号数为 -1, FFH表示的无符号数为255。

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

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

实验一汇编程序的汇编及运行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文件。

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

学习中心:
专业:
年级:年春/秋季
学号:
学生:
题目:
1.谈谈你对本课程学习过程中的心得体会与建议
2.《汇编语言程序设计》课程设计,从以下5个题目中任选其一作答。

《汇编语言程序设计》课程设计
注意:从以下5个题目中任选其一作答。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言
作业提交:
大作业上交时文件名写法为:[姓名奥鹏卡号学习中心](如:戴卫东浙江台州奥鹏学习中心[1]VIP)
以附件word文档形式上交离线作业(附件的大小限制在10M以内),选择已完成的作业(注意命名),点提交即可。

如下图所示。

注意事项:
独立完成作业,不准抄袭其他人或者请人代做,如有雷同作业,成绩以零分计!
题目一:进制转换程序
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:比如可设计二进制转化十六进制的算法,
简单介绍该算法的基本思想,100字左右即可。

(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,ADD指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!
题目二:冒泡排序算法
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:简单介绍冒泡排序算法的基本思想,至少
100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。

(4)主要函数代码:列出算法的具体代码,如讲一个首地
址为A的N字数组,编制程序将该数组中的数据按照从
大到小排序。

(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,CMP指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!
题目三:设立标志位算法
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:试编制一个程序,从键盘中输入一行字符,
要求第一个字符必须是空格,如果不是,则退出程序。


果是,开始接受键入的字符并顺序存放在首地址为
BUFFER的缓冲区中(空格符不存入),直到接收到第二个
空格符时退出程序。

简单介绍该算法的基本思想,至少
100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,CMP指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!
题目四:删除数组中某一元素算法
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:试编制一个程序,在附加段中,有一个首
地址为LIST和未经排序的数组,在数组的第一个字中,存
放着该数组的长度,数组的首地址已经存在在DI寄存器
中,AX寄存器中存放着某个数据,要求在数组中查找该
数据,如果找到则删除。

简单介绍该算法的基本思想,至
少100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,LOOP指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!
题目五:插入数组中某一元素算法
要求:(1)撰写一份word文档,里面包括(算法思路、算法程序框图、主要函数代码、使用指令具体含义)章节。

(2)算法思路:试编制一个程序,将数据N插入一个已经
排好序的数组中,该数组的首地址以及末地址分别为
ARRAY_HEAD和ARRAY_END,数组以递增的顺序排列。


单介绍该算法的基本思想,至少100字。

(3)算法程序框图:绘制流程图或原理图,从算法的开始
到结束的程序框图。

(4)主要函数代码:列出算法的具体代码。

(5)列出算法中使用指令的含义,比如解释MOV指令的
含义,LOOP指令的含义,至少撰写十个指令。

总则:只能使用汇编语言进行编制,不能选用C/C++等高级语言!。

相关文档
最新文档