汇编第6章 子程序设计
- 格式:ppt
- 大小:231.00 KB
- 文档页数:27
汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
《汇编语言程序设计》课程教学大纲学时:32 学分:2理论学时:24 实验学时:8面向专业:电科、电信、通信课程代码:B2700009先开课程:C语言程序设计课程性质:必修执笔人:王艳春审定人:陈龙猛、张金政第一部分:理论教学部分一、说明1、课程的性质、地位和任务本课程属于专业基础课,是电科、电信和通信专业学生必修的核心课程之一,是进一步学习微机原理、操作系统等课程的基础。
掌握它有助于提高学生对计算机系统的设计、研究、开发和应用能力。
汇编语言是一种面向机器、实践性很强的程序设计语言,必须结合一种实际的计算机来组织教学。
因此,本课程选择最广泛使用的IBM PC作为具体的机型来介绍。
通过课堂教学和上机实践,培养学生用汇编语言进行编程的思路、方法,养成良好的程序设计习惯,并了解底层I/O 驱动软件的编程方法,熟悉源程序汇编、链接和调试运行的步骤和方法,掌握dos、BIOS功能的调用方法及使用debug工具的调试手段,为后续课的学习打下扎实的基础。
2、课程教学和教改基本要求课程的目的与教学基本要求:本课程主要介绍汇编语言和宏汇编的基本概念,80X86CPU的指令系统和寻址方式;介绍汇编语言程序格式、伪操作和上机全过程。
通过实际例子,详细叙述顺序、分支、循环、子程序等基本程序结构以及程序设计的基本方法和技巧。
学习这门课程,应达到以下几个要求:①掌握汇编语言的基本理论知识和有关概念;掌握用汇编语言编写源程序的基本原则、方法和技巧;②具有阅读,分析汇编语言程序的能力;③通过上机实践,能够熟练地掌握汇编语言程序的编辑、汇编、连接、运行过程及debug工具的调试手段。
课堂授课采用多媒体教学,采用由浅入深、循序渐进学习步骤,主要讲解设计思想、实现技巧,通过提问题引导学生思考,提高学生的学习兴趣,从而加深学生对理论课的理解,提高学生的动手能力。
二、教学内容与课时分配第一章基础知识(2学时)1.1 机器语言及汇编语言的产生1.2 汇编语言的组成1.3 存储器1.4 指令和数据1.5 存储单元及CPU对存储器的读写1.6 三大总线1.7 主板、接口卡及各类存储器芯片1.8 内存地址空间教学的重点与难点:指令和数据在内存或磁盘上没有区别;内存地址空间。
《C 语言程序设计》各章练习题2016年12月汇编第1-3章 C 语言基础、编程规范、顺序结构程序设计编程题1:设a 和b 均为int 型变量,编写一个程序,通过键盘读入a,b 的值,然后交换a,b 的值。
要求屏幕显示“输入2个整数,用空格隔开”的提示语句,并且输出交换前a,b 的值,交换后a,b 的值。
附加要求:(1)允许定义第3个变量,实现交换;(2)不允许定义第3个变量,实现交换。
第4章选择结构程序设计编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
编程题2:根据下列函数关系写程序,要求提示输入x 的值,输出y 的值。
编程题3:求 ax 2+bx+c=0方程的解。
(只输出b 2-4ac>=0的求解结果,小于0,输出“不予求解!”)第5章 循环结构程序设计编程题4:编程计算∑=ni i 1。
要求提示键盘输入n ,如n 为负数,不予计算,直接返回。
编程题5:编程序计算n !,要求n 从键盘输入,如n 小于0,不予计算。
编程题6:从键盘输入一个数n ,判断n 是否是素数。
编程题6:编写程序输出1~100之间的偶数,要求屏幕显示时5个偶数一行,每个数占5位,右对齐。
编程题7:编程计算100到1000之间有多少个数其各位数字之和是5,并将其输出。
编程题8:求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。
编程题9:有一些十进制整数对ab和cd具有如下特性:ab×cd=ba×dc,其中a≠b且c≠d。
如:12×42=21×24。
请编程找出30~50之间满足上述等式所有m,n值,并按上述等式的格式输出。
(×用*表示)编程题10:从键盘上输入一个整数,然后把这个整数的各位逆序输出。
例如,输入123456,输出654321。
第6章数组编程题11:有一个已排好序的数组int a[11]={-5,-3,0,6,8,12,16,28,66,88};,要求输入一个数后,按原来排序的规律将它插入数组中。
3545233.doc 制作:江家宝《IBM—PC汇编语言程序设计》课后作业参考答案目录第一章:基础知识 ........................................................................................ 2第二章:80×86计算机组织......................................................................... 2第三章:80×86的指令系统和寻址方式..................................................... 3第四章:汇编语言程序格式........................................................................ 7第五章:循环与分支程序设计.................................................................... 9第六章:子程序结构 ................................................................................ 12第七章:高级汇编语言技术.................................................................... 20第八章:输入输出程序设计.................................................................... 22第九章:BIOS和DOS中断 (23)3545233.doc 制作:江家宝第一章:基础知识1.1、用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(3) 4095 答:(3) 4095 =1111 1111 1111B=FFFH1.2、将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 答:(1) 10 1101B=2DH=451.3、将下列十六进制数转换为二进制数和十进制数:(4) 1234 答:(4) 1234H=1 0010 0011 0100B=46601.4、完成下列十六进制数的运算,并转换为十进制数进行校核:(3) ABCD-FE 答:(3) ABCD-FEH=AACFH=437271.5、下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
第6章软件编码一、填空题(20小题)1、源程序中加注释是帮助理解程序的重要手段,注释分为( )、( )两类。
答案:序言性注释、功能性注释2、通常考虑选用语言的因素有( )、( )、( )、( )和( )。
答案:项目的应用领域、软件开发的方法、软件执行环境、算法与数据结构的复杂性、软件开发人员的知识3、从软件工程的观点,语言的工程特性是指( )、( )、( )和( )。
答案:可移植性、开发工具的可利用性、软件的可重用性、可维护性4、编写操作系统、编译系统等系统软件时,可选用( )、( )、( )和( )等。
答案:汇编语言、C语言、Pascal语言、Ada语言5、效率是一个( )要求,目标在( )给出。
答案:性能、需求分析6、提高程序效率的根本途径在于选择良好的( )、良好的( ),而不是靠编程时对程序语句做调整。
答案:设计方法、数据结构与算法7、语句构造的原则是( ),不能为了追求效率而使代码( )。
答案:简单直接、复杂化8、程序设计语言的心理特性在语言中的表现形式为( )、( )、( )、( )和( )。
答案:歧义性、简洁性、局部性、顺序性、传统性9、语言的心理特性在语言中的表现形式有:( )、( )、( )、( )和( )。
答案:歧义性、简洁性、局部性、顺序性、传统性10、程序设计语言的简洁性是指人们必须记住的( )的数量。
人们要掌握一种语言,需要记住的成分数量越多,简洁性越( )。
答案:语言成分、差11、在软件的设计中占有极其重要地位的是软件功能结构,它是联系( )跟开发者的规格说明。
答案:用户12、贯穿于软件生存期中的一个极为重要的问题是( )。
答案:软件质量13、为了做好软件质量评价,必须在( )定义其质量需求。
答案:开发前14、在McCall 质量度量模型中,针对面向软件产品的运行、修改、转移,软件质量概念包括11个特性,面向软件产品操作的5个特性是:( )、( )、( )、( )和( )。
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第六章答案2006-11-04 22:022、答:(1) NAME1 NAMELIST < >(2) MOV AX,DATA ;假设结构变量NAME1定义在数据段DATA中MOV DS,AXMOV ES,AX;MOV AH,10LEA DX,NAME1INT 21H;MOV CL,NAME1.ACTLENMOV CH,0LEA SI,INLEA DI,DISPFILECLDREP MOVSB6、答:SKIPLINES PROC NEARPUSH CXPUSH DXMOV CX,AXNEXT:MOV AH,2MOV DL,0AHINT 21HMOV AH,2MOV DL,0DHINT 21HLOOP NEXTPOP DXPOP CXRETSKIPLINES ENDP7、答:dseg segmentnum dw 76,69,84,90,73,88,99,63,100,80n dw 10s6 dw 0s7 dw 0s8 dw 0s9 dw 0dseg endscode segmentmain proc farassume cs:code, ds:dseg start:push dssub ax, axpush axmov ax, dsegmov ds, axcall sub1retmain endpsub1 proc nearpush axpush bxpush cxpush simov si, 0mov cx, nnext:mov ax, num[si]mov bx, 10div blmov bl, alcbwsub bx, 6sal bx, 1inc s6[bx]add si,2loop nextpop sipop cxpop bxpop axretsub1 endpend start8、答:data segmentmaxlen db 40n db ?table db 40 dup (?)char db 'a' ; 查找字符’a’evenaddr dw 3 dup (?)data endscode segmentassume cs:code, ds:datamain proc farstart:push dsmov ax, 0push axmov ax, datamov ds, axlea dx, maxlenmov ah, 0ahint 21h ; 从键盘接收字符串mov addr, offset tablemov addr+2, offset nmov addr+4, offset charmov bx, offset addr ; 通过地址表传送变量地址call count ; 计算CHAR的出现次数call display ; 显示retmain endpcount proc near ; count子程序push sipush dipush axpush cxmov si, [bx+2]mov cl, byte ptr[si]mov ch, 0mov si, [bx+4]mov al, byte ptr[si]mov bx, 0again:cmp al, byte ptr[di]jne l1inc bxl1: inc diloop againpop cxpop axpop dipop siretcount endpdisplay proc near ; display子程序call crlf ; 显示回车和换行mov dl, charmov ah, 2int 21hmov dl, 20hmov ah, 2int 21hmov al, bland al, 0fhadd al, 30hcmp al, 3ahjl printadd al, 7print:mov dl, alint 21hcall crlfretdisplay endpcrlf proc near ; crlf子程序mov dl, 0dhmov ah, 2int 21hmov dl, 0ahmov ah, 2int 21hretcrlf endpcode endsend start。
汇编语言程序设计教程(第二版)习题参考答案第1章计算机基础知识1.计算机的应用分哪几个方面,请举例说明书中未提到的领域的计算机应用。
科学计算、数据处理、计算机控制、计算机辅助设计、人工智能、企业管理、家用电器、网络应用。
书中未提及的如:远程教育、住宅小区控制、飞行系统控制与管理等。
2.简述计算机的发展过程,请查阅相关资料,列出微机的发展过程。
电子管、晶体管、集成电路、大规模集成电路以IBM为例,微机的发展:4004、8008、8080、8086/8088、80286、80386、80486、Pentium 系列3.计算机的字长是怎么定义的,试举例说明。
计算机能同时处理二进制信息的位宽定义为计算机的字长。
如8086能同时进行16位二进制数据的运算、存储和传输等操作,该机器的字长为16位。
4.汇编语言中的基本数据类型有哪些?数值型数据和非数值型数据。
非数值数据如字符、字符串、逻辑值等。
(1)7BCH=011110111100B=1980D(2)562Q=101110010B=370D(3)90D=01011010B=5AH(4)1110100.111B=164.7Q=74.EH30H~39H 41H~5AH 61H~7AH9.在汇编语言中,如何表示二进制、八进制、十进制和十六进制的数值?用相应进制的数值加上进制标记即可。
二进制用B,如10101010B八进制用Q,如437Q。
十进制用D或不用,如54D,或54。
十六进制用H,如27A8H10.完成下列二进制数的加减运算。
(1)10101010 + 11110000 (2)11001100 + 01010100=110011010 =100100000(3)11011010 - 01010010 (4)11101110 - 01001101=10001000 =1010000111.完成下列十六进制数的加减运算。
(1)0FEA9 - 8888=7621H (2)0FFFF - 1234=EDCBH(3)0EAC0 + 0028=EAE8H (4)3ABC + 1678=5134H12.完成下列BCD码的运算。
第6章由机器语言到高级语言:程序编写与编译1、关于计算机语言,下列说法不正确的是_____。
(A)所有源程序最后都需被转换为汇编语言程序,机器才能够执行;(B)所谓“高级语言”和“低级语言”是指其和机器硬件的相关程度,不涉及机器硬件的语言为高级语言,而与机器硬件相关的语言则为低级语言;(C)低级语言程序执行效率高是因为用低级语言编程时可以充分利用硬件的各种特殊性,而高级语言则只能使用硬件的标准结构;(D)高级语言编程效率高是因为其可用大粒度积木块来构造程序,比一行行语句、一条条指令来编程效率高出很多。
(E)上述有不正确的。
答案:A解释:本题考核对“计算机语言”的理解。
(A)所有源程序最后都需被转换为机器语言程序,机器才能够执行,所以(A)错误;(B)(C)和(D)的叙述都是正确的。
具体内容请参考第六章视频之“从机器语言到汇编语言”以及第六章课件。
2、关于计算机语言,下列说法不正确的是_____。
(A)汇编语言和机器语言是以指令为单位来编写程序;(B)高级语言是以语句为单位来编写程序,一条语句相当于若干条指令(或者说一条语句可用若干条指令来实现);(C)面向对象语言或可视化构造语言是以对象(类)为单位来编写程序,一个对象相当于若干条语句((或者说一个对象可用若干条语句来实现);(D)我们可以设计一种新语言,让用户以其更熟悉的对象(类)来编写源程序,然后提供一个编译器将该源程序转换成某种已广泛使用的高级语言源程序,就可以让机器执行该程序。
(E)上述有不正确的。
答案:E解释:本题考核对“计算机语言”的理解。
(A)(B)(C)和(D)的叙述都是正确的,所以选择(E)。
具体内容请参考第六章视频之“从机器语言到汇编语言”以及第六章课件。
3、关于计算机语言的编译,下列说法不正确的是_____。
(A)需要“分词”,将其中的常量、变量名和保留字识别出来,并分类及编号;(B)需要识别每一条语句所对应的“模式”。
任意语句的常量和变量名被归为“标识符”类别,而标识符与保留字的不同组合关系构成了语句的模式;计算机语言是由有限的语句模式构成的;(C)对每一种模式,都有相应的组合构造方法,即模式可被认为是由原子模式或说基本模式通过组合的方法构造出来的,对原子模式或者基本模式可以事先写好其相应的目标语言的指令或语句;(D)按照模式由原子模式的组合次序,可将模式语句转换成目标语言的指令或语句;进一步按照分类及编号将常量、变量名代入形成最终的目标语言程序,完成编译;(E)上述有不正确的。
《汇编语言程序设计》作业习题第1章汇编语言基础知识习题1.1 什么是汇编语言?汇编语言的特点是什么?1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。
① 127 ② 1021 ③ 0.875 ④ 6.251.3把下列二进制数转换成十进制数。
① 1001.11 ② 101011.10011 ③ 111.011 ④ 1011.11.4 把下列八进制数转换成十进制数。
① 573.06 ② 75.23 ③ 431.7 ④ 123.451.5 把下列十六进制数转换成十进制数。
① 0D5.F4 ② 8BA.7C ③ 0B2E.3A ④ 6EC.2D1.6 把下列英文单词转换成ASCII编码的字符串。
① Upper ② Blow ③ Computer ④ What1.7 求下列带符号十进制数的8位基2码补码。
① +127 ②−2 ③−128 ④ +21.8 求下列带符号十进制数的16位基2码补码。
① +628 ②−9 ③−1234 ④ +32491.9 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
①68+(―53)②68―53 ③68―(―53)④(―68)―531.10 汉字在输入、存储、输出过程中所使用的汉字编码是否一样?使用的是什么编码?第2章 IBM-PC系统结构习题2.1什么是微型计算机?微型计算机主要由哪几部分组成?其主要功能是什么?2.2 8086/8088CPU由哪两部分组成?它们的主要功能是什么?2.3 8086/8088CPU有哪些寄存器?各有什么用途?2.4 8086/8088CPU哪些寄存器可以用来指示存储器地址?2.5标志寄存器中有哪些状态标志和控制标志?它们每一位所表示的含义是什么?2.6有两个16位数3A4BH和10EFH分别存放在2000H和2004H存储单元中,请用图表示出它们在存储器里的存放情况。
2.7一个存储单元的物理地址、段地址、偏移地址三者之间有何关系?2.8在DEBUG程序中,一条指令语句表示为2000:0030 MOV AL,8。