汇编语言程序设计(第四版)第3章【课后答案】

合集下载

汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计(第四版)【课后答案】

汇编语言程序设计第四版【课后习题答案】第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〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。

汇编语言程序设计 程学先 汇编第2、3,4章作业参考答案

汇编语言程序设计 程学先 汇编第2、3,4章作业参考答案

2.16编写程序段,使(AH)与( AL)中的内容互换。

解1MOV BL,ALMOV AL,AH.MOV AH,BL解2XCHG AH,AL2.17编写程序段,使(BL)中高4位与低4位内容互换。

解1MOV CL,4MOV BH,0SHL BX,CLADD BL,BH解2MOV CL,4ROL BL,CL2.18编写程序段,实现当(DL)是奇数时使(AL)=31H,否则使(AL)=30H。

SHR DL,1MOV AL,0RCL AL,1ADD AL,30H2.20设寄存器AX中存放1234H,BX寄存器中存放1,执行DIV BL指令后,会发生什么现象?为什么?溢出,商超过8位,在ALxx存放不下商。

2.21设DX寄存器中存放值为0,AX中存放1234H,BX中存放1,执行DIV BX后,是否会出现与2.20相同现象?为什么?不会,因为是16位除法,商未超过16位2.22一字数据压栈时堆栈指针如何改变?弹出一字数据时堆栈指针如何改变?压栈时堆栈指针减2;弹出一字数据时堆栈指针加22.23已知(SP)=2088H,(AX)=1A89H,(BX)=90CDH。

依次执行以下三条指令后,画图说明堆栈中数据情况,及SP、AX、BX中数据。

PUSH AXPUSH BXPOPAX(SP)=2086H,(AX)=90CDH,(BX)=90CDH。

*2.25编写程序段求8!(8的阶乘)。

MOV AX,8MOV BX,7NEXT:DX,0DEC BXJNZ NEXT2.27假设(AX)=07EH,变量BUFFER中存放的内容为B5H,求下列各条指令单独执行后的结果。

(1)ANDAX,BUFFER34H(2)XORAX,BUFFERCBH(3)ORAX,BUFFER0FFH(4)ANDAX,00(5)XORAX,OFFH81H(6)TESTAX,8000H相与结果为0时。

AX为正,值不变*2.28编写程序段,判断(AL)中的有符号数是正数还是负数,正数在CL中写0,否则写1。

编译原理教程课后习题答案——第三章

编译原理教程课后习题答案——第三章

第三章语法分析3.1 完成下列选择题:(1) 文法G:S→xSx|y所识别的语言是。

a. xyxb. (xyx)*c. xnyxn(n≥0)d. x*yx*(2) 如果文法G是无二义的,则它的任何句子α。

 a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同(3) 采用自上而下分析,必须。

a. 消除左递 a. 必有ac归b. 消除右递归c. 消除回溯d. 提取公共左因子(4) 设a、b、c是文法的终结符,且满足优先关系ab和bc,则。

b. 必有cac. 必有bad. a~c都不一定成立(5) 在规范归约中,用来刻画可归约串。

a. 直接短语b. 句柄c. 最左素短语d. 素短语(6) 若a为终结符,则A→α·aβ为项目。

a. 归约b. 移进c. 接受d. 待约(7) 若项目集Ik含有A→α· ,则在状态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采取“A→α· ”动作的一定是。

a. LALR文法b. LR(0)文法c. LR(1)文法d. SLR(1)文法(8) 同心集合并有可能产生新的冲突。

a. 归约b. “移进”/“移进”c.“移进”/“归约”d. “归约”/“归约”【解答】(1) c (2) a (3) c (4) d (5) b (6) b (7) d (8) d3.2 令文法G[N]为G[N]: N→D|NDD→0|1|2|3|4|5|6|7|8|9(1) G[N]的语言L(G[N])是什么?(2) 给出句子0127、34和568的最左推导和最右推导。

【解答】(1) G[N]的语言L(G[N])是非负整数。

(2) 最左推导:NNDNDDNDDDDDDD0DDD01DD012D0127NNDDD3D34NNDNDDDDD5DD56D568最右推导:NNDN7ND7N27ND27N127D1270127NNDN4D434NNDN8ND8N68D685683.3 已知文法G[S]为S→aSb|Sb|b,试证明文法G[S]为二义文法。

《C语言程序设计》课后习题答案(第四版)

《C语言程序设计》课后习题答案(第四版)

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

《C语言程序设计》课后习题答案解析(第四版)谭浩强

《C语言程序设计》课后习题答案解析(第四版)谭浩强

第1章程序设计和C语言11.1什么是计算机程序11.2什么是计算机语言11.3C语言的发展及其特点31.4最简单的C语言程序51.4.1最简单的C语言程序举例61.4.2C语言程序的结构101.5运行C程序的步骤与方法121.6程序设计的任务141-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n"); printf(" Very Good!\n\n");printf ("**************************\n"); return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用N S流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3C语句573.3.1C语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。

C语言程序设计(谭浩强)第四版_课后答案

C语言程序设计(谭浩强)第四版_课后答案

第一章程序设计和C语言【第15页】1-5#include <stdio.h>int main ( ){ printf ("**************************\n");printf(" Very Good!\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂【第36页】暂无答案第3章最简单的C程序设计——顺序程序设计【第82页】3-1#include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

(完整版)计算机操作系统(第四版)课后习题答案第三章

(完整版)计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。

(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。

(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。

为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。

当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。

3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。

系统根据该说明书对程序的运行进行控制。

批处理系统中是以作业为基本单位从外存调入内存。

作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。

作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。

4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。

JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。

计算机操作系统(第四版)课后习题答案第三章

计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度‎与死锁1,高级调度与‎低级调度的‎主要任务是‎什么?为什么要引‎入中级调度‎?【解】(1)高级调度主‎要任务是用‎于决定把外‎存上处于后‎备队列中的‎那些作业调‎入内存,并为它们创‎建进程,分配必要的‎资源,然后再将新‎创建的进程‎排在就绪队‎列上,准备执行。

(2)低级调度主‎要任务是决‎定就绪队列‎中的哪个进‎程将获得处‎理机,然后由分派‎程序执行把‎处理机分配‎给该进程的‎操作。

(3)引入中级调‎度的主要目‎的是为了提‎高内存的利‎用率和系统‎吞吐量。

为此,应使那些暂‎时不能运行‎的进程不再‎占用宝贵的‎内存空间,而将它们调‎至外存上去‎等待,称此时的进‎程状态为就‎绪驻外存状‎态或挂起状‎态。

当这些进程‎重又具备运‎行条件,且内存又稍‎有空闲时,由中级调度‎决定,将外存上的‎那些重又具‎备运行条件‎的就绪进程‎重新调入内‎存,并修改其状‎态为就绪状‎态,挂在就绪队‎列上,等待进程调‎度。

3、何谓作业、作业步和作‎业流?【解】作业包含通‎常的程序和‎数据,还配有作业‎说明书。

系统根据该‎说明书对程‎序的运行进‎行控制。

批处理系统‎中是以作业‎为基本单位‎从外存调入‎内存。

作业步是指‎每个作业运‎行期间都必‎须经过若干‎个相对独立‎相互关联的‎顺序加工的‎步骤。

作业流是指‎若干个作业‎进入系统后‎依次存放在‎外存上形成‎的输入作业‎流;在操作系统‎的控制下,逐个作业进‎程处理,于是形成了‎处理作业流‎。

4、在什么情冴‎下需要使用‎作业控制块‎J CB?其中包含了‎哪些内容?【解】每当作业进‎入系统时,系统便为每‎个作业建立‎一个作业控‎制块JCB‎,根据作业类‎型将它插入‎到相应的后‎备队列中。

JCB 包含的内容‎通常有:1) 作业标识2‎)用户名称3‎)用户账户4‎)作业类型(CPU繁忙‎型、I/O芳名型、批量型、终端型)5)作业状态6‎)调度信息(优先级、作业已运行‎)7)资源要求8‎)进入系统时‎间9) 开始处理时‎间10) 作业完成时‎间11) 作业退出时‎间12) 资源使用情‎况等5.在作业调度‎中应如何确‎定接纳多少‎个作业和接‎纳哪些作业‎?【解】作业调度每‎次接纳进入‎内存的作业‎数,取决于多道‎程序度。

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

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

第四章汇编语言程序设计习题答案一、单项选择题1.C2.B3.C4.C5.C6.A7.A8.C9.B10. D11.B12.B13.D14.C15.C16.A17.D18.D19.A20. C21.B22.D23.D24. A二、多项选择题1.ABCEF2.ACE3.AC4.ABCD三、填空题1.PARA2.1,2,60,120, 13.SEGMENT,ENDS4.12005.段内转移,段间转移6.AH7.过程,PROC,RET,NEAR,FAR8.LEA BX,BUF9.1, 410..0504H11.ASM,EXE12.立即寻址,直接寻址四、判断题××××V V V××V五、程序分析题1. 32.12H,3412H3.46H,73H4.(1) 从目的串中查找是否包含字符‘0’,若找到则停止,否则继续重复搜索。

(2) ZF=1, 说明已找到字符ZF=0, 说明未找到字符CX 0,说明中途已找到字符退出CX=0,且ZF=0说明串中无字符‘0’5.1, 0, 3, 2, 5, 4, 7, 6, 9, 86.87H,81H7.44AAH,44D5H8.DEC CX,JNC,JZ9.JNZ L210.ADC DX,0,CLC11.AAS12.STOSB13.1,3,1,2, 214.(2000H)=39H (2001H)=00H将(2000H),(2001H)两相邻单元中存放的未组合型BCD码压缩成组合型BCD码,并存入(2000H)单元,0 (2001H)15.A)2345H,6780HB)将DX、AX中存放的32位二进制数向左移动4位16.0 ,1009H0对数据段内1000H~1008H单元置数,依次送入1,2,4,8,16,32,64,128,0共九个17.20H,10,T18.①$-BUF②ASSUME CS:CODE,DS:DATA③MOV DS,AXMOV AX,0⑤JLE NEXT⑥JNZ NEXT⑦JNZ LOPA⑧BEGIN19.不相同,第一个数据段72H在前,04在后,后一个04H在前,72H在后。

计算机操作系统(第四版)课后习题答案第三章

计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。

(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。

(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。

为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。

当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。

3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。

系统根据该说明书对程序的运行进行控制。

批处理系统中是以作业为基本单位从外存调入内存。

作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。

作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。

4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。

JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。

计算机操作系统(第四版)课后习题答案第三章

计算机操作系统(第四版)课后习题答案第三章

第三章处理机调度与死锁1,高级调度与低级调度的主要任务是什么?为什么要引入中级调度?【解】(1)高级调度主要任务是用于决定把外存上处于后备队列中的那些作业调入内存,并为它们创建进程,分配必要的资源,然后再将新创建的进程排在就绪队列上,准备执行。

(2)低级调度主要任务是决定就绪队列中的哪个进程将获得处理机,然后由分派程序执行把处理机分配给该进程的操作。

(3)引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量。

为此,应使那些暂时不能运行的进程不再占用宝贵的内存空间,而将它们调至外存上去等待,称此时的进程状态为就绪驻外存状态或挂起状态。

当这些进程重又具备运行条件,且内存又稍有空闲时,由中级调度决定,将外存上的那些重又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上,等待进程调度。

3、何谓作业、作业步和作业流?【解】作业包含通常的程序和数据,还配有作业说明书。

系统根据该说明书对程序的运行进行控制。

批处理系统中是以作业为基本单位从外存调入内存。

作业步是指每个作业运行期间都必须经过若干个相对独立相互关联的顺序加工的步骤。

作业流是指若干个作业进入系统后依次存放在外存上形成的输入作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。

4、在什么情冴下需要使用作业控制块JCB?其中包含了哪些内容?【解】每当作业进入系统时,系统便为每个作业建立一个作业控制块JCB,根据作业类型将它插入到相应的后备队列中。

JCB 包含的内容通常有:1) 作业标识2)用户名称3)用户账户4)作业类型(CPU 繁忙型、I/O芳名型、批量型、终端型)5)作业状态6)调度信息(优先级、作业已运行)7)资源要求8)进入系统时间9) 开始处理时间10) 作业完成时间11) 作业退出时间12) 资源使用情况等5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?【解】作业调度每次接纳进入内存的作业数,取决于多道程序度。

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】

汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计(第四版)第3章【课后答案】汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。

汇编语言对大小写不敏感。

如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第4章【课后答案】

cmp al, 'z'
ja getkay
sub al,20h
;是小写字母转换为大写字母
mov dl,al
mov ah, 02h
;显示
int 21h
〔习题 4.5〕已知用于 LED 数码管显示的代码表为:
-2-
LEDtable DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h
.data
stri1 db 'please input number:1--9',0dh,0ah,'$'
.code
.startup
again: mov dx,offset stri1 ;显示 stri1,提示输入
mov ah,09h
int 21h
mov ah,01h
;调用输入一个字符
int 21h
;输入一个字符存在 al 中
DB 80h,90h,88h,83h,0c6h,0c1h,86h,8eh
它依次表示 0 ~ 9、A ~ F 这 16 个数码的显示代码。现编写一个程序实现将 lednum 中的一
个数字(0 ~ 9、A ~ F)转换成对应的 LED 显示代码。
〔解答〕
.model small
.stack 256
.data
shr dl, cl
mov cl, ah
;屏蔽高四位后送 cl
and cl, 0fh
〔习题 4.4〕编写一个程序,把从键盘输入的一个小写字母用大写字母显示出来。
〔解答〕
getkey: mov ah, 1
;从键盘输入,出口:al 存键值
int 21h
cmp al, 'a'

C语言程序设计(谭浩强)第四版-课后答案

C语言程序设计(谭浩强)第四版-课后答案

第一章程序设计和C语言【第15页】1-5#include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" V ery Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂【第36页】暂无答案第3章最简单的C程序设计——顺序程序设计【第82页】3-1#include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计(第四版)第4章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。

〔解答〕思路:首先由最高位字节向次低位字节传送……次低位字节向最低位字节传送(共7次);再判最高位字节符号位,如为0,送00h到最高位字节;如为1,送ffh到最高位字节。

传送可参考例题4.2,不过应从第一号字节送第零号字节,……最高位字节向次低位字节传送;也可以用循环来完成:.model small.stack 256.dataqvar dq 54321h.code.startupmov cx,7mov si,1again: mov al, byte ptr qvar[si]mov byte ptr qvar[si-1],alinc siloop againtest al,80hjz ezzmov bl,0ffhjmp doneezz: mov bl,0done: mov byte ptr qvar[7],bl.exit 0end〔习题4.2〕例题4.2如果要求算术左移7位,如何用移位指令实现。

〔解答〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带CF 位循环左移一次(内循环共8次),外循环体控制执行7次即可。

.model small.stack 256.dataqvar dq 54321h.code.startupmov dx, 7 ;外循环次数mov ax, byte ptr qvar[0] ;最低位字节送axlpp: shl ax, 1 ;最低位字节左移一次,其d7移入CF位mov si, 1mov cx, 7 ;内循环次数again: rcl byte ptr qvar[si], 1 ;高位字节依次左移P50inc siloop againdec dxjnz lpp.exit 0.end〔习题4.3〕将AX寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。

《C语言程序设计》课后习题答案第四版谭浩强

《C语言程序设计》课后习题答案第四版谭浩强

第1章程序设计和C语言 1 1.1什么是计算机程序 1 1.2什么是计算机语言 1 1.3C语言的发展及其特点 3 1.4最简单的C语言程序 51.5运行C程序的步骤与方法1 2 1.6程序设计的任务14 1-5 #include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max); return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.5结构化程序设计方法34习题36第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.3C语句573.4数据的输入输出65习题823-1 #include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。

汇编语言程序设计(第四版)第4章[课后答案]

汇编语言程序设计(第四版)第4章[课后答案]

汇编语言程序设计(第四版)第4章[课后答案]汇编语言程序设计第四版【课后习题答案】--暄[|第4章基本汇编语言程序设计〔习题4.1〕例题4.2如果要求算术右移8位,如何修改程序。

〔解答〕思路:首先由最低位字节向次低位字节传输……次低位字节向最高位字节传输(共7次);再被判最低位字节符号位,如为0,送来00h至最低位字节;如为1,送来ffh至最低位字节。

传输可以参照例题4.2,不过需从第一号字节送来第零号字节,……最低位字节向次低位字节传输;也可以用循环去顺利完成:.modelsmall.stack256.dataqvardq1234567887654321h.code.startupmovcx,7movsi,1again:moval,byteptrqvar[si]movbyteptrqvar[si-1],alincsiloopagaintestal,80hjzezzmovbl,0ffhjmpdoneezz:movbl,0done:movbyteptrqvar[7],bl.exit0end〔习题4.2〕例题4.2如果建议算术左移7十一位,如何用移位指令同时实现。

〔答疑〕思路:可设计外循环体为8个字节左移一次,方法是:最低位字节算术左移一次,次低位字节至最高位字节依次带cf位循环左移一次(内循环共8次),外循环体控制执行7次即可。

.modelsmall.stack256.dataqvardq1234567887654321h.code.startupmovdx,7;外循环次数movax,byteptrqvar[0];最高位字节送来axlpp:shlax,1;最低位字节左移一次,其d7移入cf位movsi,1movcx,7;内循环次数again:rclbyteptrqvar[si],1;高位字节依次左移p50incsiloopagaindecdxjnzlpp.exit0.end〔习题4.3〕将ax寄存器中的16位数连续4位分成一组,共4组,然后把这4组数分别放在al、bl、cl和dl寄存器中。

汇编语言程序设计第四版第3章课后答案

汇编语言程序设计第四版第3章课后答案

汇编语言程序设计第四版第3章课后答案第3章课后答案1. 简答题1) 什么是机器代码?机器代码是计算机能够直接执行的二进制指令形式。

每个机器代码指令都对应着特定的操作,如加法、乘法、跳转等。

2) 简要解释高级语言和低级语言的区别。

高级语言是相对于机器语言而言的,它使用更接近自然语言的语法,提供了更多的抽象和封装,便于程序员编写和维护。

低级语言是直接面向硬件的,更加底层和繁琐,需要人工管理更多的细节。

3) 在汇编语言中,标号有什么作用?标号在汇编语言中用于标识一个程序或一段代码的起始位置,它可以被跳转指令引用,使程序执行流程可以根据条件或需求进行跳转。

4) MOV指令和ADD指令有什么区别?MOV指令用于将一个值从一个位置复制到另一个位置,而ADD指令用于将两个值相加并将结果存储在指定位置。

MOV指令只进行简单的值传递,ADD指令涉及运算操作。

5) 什么是汇编器?它的作用是什么?汇编器是一种将汇编语言转化为机器码的工具。

它将汇编语言源代码转换为机器可以直接执行的二进制指令,使程序能够在计算机上运行。

2. 选择题1) 在一台计算机上,每个指令都以二进制表示。

这个二进制串被解释成对应的操作。

这句话描述了:a) 汇编语言b) 机器码 (正确答案)c) 高级语言2) MOV指令用于:a) 在寄存器之间传递数据 (正确答案)b) 进行加法运算c) 进行跳转操作3) 汇编语言的源代码以什么文件扩展名保存?a) .asm (正确答案)b) .exec) .txt4) 在汇编语言中,用于标识起始位置的符号称为:a) 操作码b) 标号 (正确答案)c) 寄存器5) 汇编器的作用是:a) 将机器码转换为汇编语言b) 将汇编语言转换为机器码 (正确答案)c) 将高级语言转换为机器码3. 程序设计题编写一个汇编程序,实现将两个数字相加的功能。

```asmDATA SEGMENTNUM1 DB 10NUM2 DB 20RESULT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART:MOV AX, DATAMOV DS, AXMOV AL, NUM1ADD AL, NUM2MOV RESULT, ALMOV AH, 4CHINT 21HCODE ENDSEND START```程序解读:1) 首先声明了一个数据段(DATA SEGMENT),其中定义了NUM1和NUM2两个字节变量,用于存储待加的两个数字;RESULT 变量用于存储结果。

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

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第3章汇编语言程序格式〔习题3.1〕伪指令语句与硬指令语句的本质区别是什么?伪指令有什么主要作用?〔解答〕伪指令语句与硬指令语句的本质区别是能不能产生CPU动作;伪指令的作用是完成对如存储模式、主存变量、子程序、宏及段定义等很多不产生CPU动作的说明,并在程序执行前由汇编程序完成处理。

〔习题3.2〕什么是标识符,汇编程序中标识符怎样组成?〔解答〕为了某种需要,每种程序语言都规定了在程序里如何描述名字,程序语言的名字通常被称为标识符;汇编语言中的标识符一般最多由31个字母、数字及规定的特殊符号(如-,$,?,@)组成,不能以数字开头。

〔习题3.3〕什么是保留字,汇编语言的保留字有哪些类型,并举例说明。

〔解答保留字是在每种语言中规定了有特殊意义和功能的不允许再做其它用处的字符串;汇编语言的保留字主要有硬指令助记、伪指令助记符、运算符、寄存器名以及预定义符号等。

汇编语言对大小写不敏感。

如定义字节数和字符串的DB就是伪指令助记符。

〔习题3.4〕汇编语句有哪两种,每个语句由哪4个部分组成?〔解答〕汇编语句有执行性语句和说明性语句;执行性语句由标号、硬指令助记符、操作数和注释四部分组成;说明性语句由名字、伪指令助记符、参数和注释四部分组成〔习题3.5〕汇编语言程序的开发有哪4个步骤,分别利用什么程序完成、产生什么输出文件。

〔解答〕⒈编辑文本编辑程序汇编语言源程序.asm⒉汇编汇编程序目标模块文件.obj⒊连接连接程序可执行文件.exe或.com⒋调试调试程序应用程序〔习题3.6〕区分下列概念:(1)变量和标号(2)数值表达式和地址表达式(3)符号常量和字符串常量〔解答〕(1)变量是在程序运行过程中,其值可以被改变的量;标号是由用户自定义的标识符,指向存储单元,表示其存储内容的逻辑地址。

(2)数值表达式一般是由运算符连接的各种常数所构成的表达式,地址表达式是由名字、标号以及利用各种的操作符形成的表达式。

(3)在程序中,为了使常量更便于使用和阅读,经常将一些常量用常量定义语句定义为符号常量,被一对双引号括起来的若干个字符组成的字符序列被称为字符串常量。

〔习题3.7〕假设myword是一个字变量,mybyte1和mybyte2是两个字节变量,指出下列语句中的错误原因。

(1)mov byte ptr [bx],1000(2)mov bx,offset myword[si](3)cmp mybyte1,mybyte2(4)mov al,mybyte1+mybyte2(5)sub al,myword(6)jnz myword〔解答〕(1)1000超出了一个字节范围(2)寄存器的值只有程序执行时才能确定,而offset是汇编过程计算的偏移地址,故无法确定,改为lea bx,myword[si](3)两个都是存储单元,指令不允许(4)变量值只有执行时才确定,汇编过程不能计算(5)字节量AL与字量myword,类型不匹配(6)Jcc指令只有相对寻址方式,不支持间接寻址方式〔习题3.8〕OPR1是一个常量,问下列语句中两个AND操作有什么区别?AND AL,OPR1 AND 0feh〔解答〕前者为“与”操作硬指令助记符,可汇编成机器代码。

后者为逻辑运算符,在汇编时进行“与”运算,产生具体数值。

〔习题3.9〕给出下列语句中,指令立即数(数值表达式)的值:(1)mov al,23h AND 45h OR 67h(2)mov ax,1234h/16+10h(3)mov ax,NOT(65535 XOR 1234h)(4)mov al,LOW 1234h OR HIGH 5678h(5)mov ax,23h SHL 4(6)mov ax,1234h SHR 6(7)mov al,’a’ AND (NOT(’a’-’A’))(8)mov al,’H’ OR 00100000b(9)mov ax,(76543 LT 32768) XOR 7654h〔解答〕注:对于逻辑运算,有关操作数可化为二进制数。

(1)67h(2)133h(3)1234h(4)76h(5)0234h(6)0048h(7)41h(8)68h(9)7654h〔习题3.10〕画图说明下列语句分配的存储空间及初始化的数据值:(1)byte_var DB ’ABC’,10,10h,’EF’,3 DUP(-1,?,3 DUP(4))(2)word_var DW 10h,-5,’EF’,3 DUP(?)〔解答〕(1)从低地址开始,依次是(十六进制表达):41 42 43 0a 10 45 46 ff -04 04 04 ff -04 04 04 ff -04 04 04(2)从低地址开始,依次是(十六进制表达):10 00 FB FF 46 45 ------〔习题3.11〕请设置一个数据段mydataseg,按照如下要求定义变量:(1)my1b为字符串变量:Personal Computer(2)my2b为用十进制数表示的字节变量:20(3)my3b为用十六进制数表示的字节变量:20(4)my4b为用二进制数表示的字节变量:20(5)my5w为20个未赋值的字变量(6)my6c为100的常量(7)my7c表示字符串:Personal Computer〔解答〕mydataseg segmentmy1b db ‘Personal Computer’my2b db 20my3b db 14h ;20hmy4b db 00010100bmy5w dw 20 dup(?)my6c equ 100 ;my6c = 100my7c equ <Personal Computer>mydataseg ends〔习题3.12〕分析例题3.2的数据段,并上机观察数据的存储形式。

〔解答〕以字节为单位从低地址向高地址依次是:1600 12FFH FFH FFH FFH00 00 00 00 00 00 00 001 2 3 4 545H 23H 00 00 00 00 00 00 00 00‘a’‘b’‘c’‘H’‘e’‘l’‘l’‘o’13 10 ‘$’12个字符串’month’,每个字符串从低地址到高地址依次是:’m’‘o’‘n’‘t’‘h’25×4个字节未定义初值的存储单元,操作系统设置为0〔习题3.13〕修改例题3.3,现在用字定义伪指令dw、字串传送指令movsw和字符串显示9号功能调用实现。

〔解答〕.model small.stack.datasource dw 3433h,3635htarget dw 40 dup(?),'$'.code.startupmov ax,dsmov es,axcldmov si,offset sourcemov di,offset targetmov cx,40rep movswmov si,0mov dx,offset targetmov ah,9int 21h.exit 0end〔习题3.14〕变量和标号有什么属性?〔解答〕段地址:表示变量和标号所在代码段的段地址;偏移地址:表示变量和标号所在代码段的段内偏移地址;类型:引用变量时,表示是字节、字、双字等数据量。

引用该标号时,表示它所在同一个段――near 类型,还是另外一个段――far类型。

〔习题3.15〕设在某个程序中有如下片段,请写出每条传送指令执行后寄存器AX的内容:mydata segmentORG 100HVARW DW 1234H,5678HVARB DB 3,4ALIGN 4VARD DD 12345678HEVENBUFF DB 10 DUP(?)MESS DB ’HELLO’BEGIN: MOV AX,OFFSET MESSMOV AX,TYPE BUFF+TYPE MESS+TYPE VARDMOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESSMOV AX,LENGTHOF VARW+LENGTHOF VARDMOV AX,LENGTHOF BUFF+SIZEOF VARWMOV AX,TYPE BEGINMOV AX, OFFSET BEGIN〔解答〕MOV AX, OFFSET MESS ;AX=116HMOV AX, TYPE BUFF+TYPE MESS+TYPE VARD ;AX = 1+1+4 = 06HMOV AX,SIZEOF VARW+SIZEOF BUFF+SIZEOF MESS ;AX = 4+10+5 = 19 = 13HMOV AX,LENGTHOF VARW + LENGTHOF VARD ;AX = 2+1 = 03HMOV AX,LENGTHOF BUFF + SIZEOF VARW ;AX = 10+4 =14 = 0EHMOV AX,TYPE BIGIN ;AX = FF02H (近)MOV AX,OFFSET BEGIN ;AX = 1BH〔习题3.16〕利用简化段定义格式,必须具有.MODEL语句。

MASM定义了哪7种存储模式,TINY和SMALL模式创建什么类型(EXE或COM)程序?设计32位程序应该采用什么模式?〔解答〕MASM定义的7种存储模式是TINY(微型模式、SMALL(小型模式)、COMPACT(紧凑模式)、MEDIUM(中型模式)、LARGE(大型模式)、HUGE(巨大模式)、FLAT(平展模式);TINY用于创建COM类型程序、一般程序都可以选用SMALL模式;设计32位的程序应该采用FLAT模式。

〔习题3.17〕源程序中如何指明执行的起始点?源程序应该采用哪个DOS功能调用,实现程序返回DOS?〔解答〕源程序中运用STARTUP伪指令指明执行的起始点;源程序应该采用DOS功能调用的4CH子功能实现程序返回DOS的。

〔习题3.18〕在SMALL存储模式下,简化段定义格式的代码段、数据段和堆栈段的缺省段名、定位、组合以及类别属性分别是什么?〔解答〕段定义伪指令段名定位组合类别组名.CODE _TEXT WORD PUBLIC 'CODE'.DATA _DATA WORD PUBLIC 'DATA' DGROUP.DATA?_BSS WORD PUBLIC 'BSS' DGROUP.STACK STACK PARA STACK 'STACK' DGROUP〔习题3.19〕如何用指令代码代替.startup和.exit指令,使得例题3.1a能够在MASM 5.x下汇编通过?〔解答〕;lt301a.asm(文件名).model small.stack.datastring db ‘Hello,Everybody !’,0dh,0ah.’$’.codestart: mov ax ,@datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax ,4c00hint 21hend start〔习题3.20〕创建一个COM程序完成例题3.1的功能。

相关文档
最新文档