c语言文件删除部分内容删除一个数字,i++前面应该输什么?

第1 周 程序设计与C语言简介

1.1 程序设计基础随堂测验

1、计算机只能处理由人们编写的、解决某些问题的、事先存储在计算机存储器中的二进制指令序列。

10、关于C语言,下面叙述不正确的是()。
    B、既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序

13、计算机只能完成其能力范围内的计算工作,超出计算机能力范围的计算计算机将无法完成。

14、可计算问题的规模造成复杂度加大,理论上计算机可以完成的计算工作,实际计算机都可以完成。

15、程序是计算机为完成某一任务所必须执行的一系列指令的有序集合。

16、高级语言是用接近自然语言的符号,按照一定的语法规则编写程序,需要编译程序翻译成机器指令才能被计算机执行。

17、编译方式下的程序当修改源程序后,需要重新编译才能够正确运行。

18、面向对象程序设计方法具有与人们的习惯与思维方法一致,便于解决复杂问题的特性。

19、C语言属于面向过程的优秀程序设计语言,既可作为系统设计语言,也可作为应用程序设计语言。

20、算法可以分为数值算法和非数值算法两大类。

21、对于同一个问题,只能有唯一的算法去解决。

22、C语言中不区分大小写字母。

23、程序中适当地添加注释,可以增加程序的可读性和清晰性。

24、在VC++6.0环境下,任何一个C程序都必须包含在一个工程项目中,而且只能有一个main函数。

25、经过编译、连接后的可执行程序可以多次运行。

26、C语言开发工具直接输入的程序代码是____文件,经过编译后生成的是目标程序文件, 经过连接后生成的是可执行程序文件。

27、C语言源程序的基本组成单位是_____。

28、结构化程序设计所规定的三种基本控制结构是顺序结构、_____结构和循环结构。

29、算法的效率通常由_____ 复杂度和空间复杂度衡量。

30、描述算法的方法主要有_____、专用工具(传统流程图、N-S流程图)和伪代码等。

31、计算机系统由硬件系统和______系统两部分组成。

32、计算机语言分为:机器语言、汇编语言和_________语言。

33、程序的执行方式分为_________和解释两种方式。

34、衡量算法的时间复杂度是指对于相同规模的问题,算法的执行_______的长短。

3、计算两个整数的乘积。

2.1 变量和常量随堂测验

2.1 变量和常量随堂测验

1、字符串"\\\’\054"占用的存储空间的长度是____。

2.1 变量和常量随堂测验

2.2 运算符和表达式随堂测验

1、“/”运算符,当两个整数相除时结果取整。

2.2 运算符和表达式随堂测验

5、下列关于C语言用户标识符的叙述中正确的是( )。
    D、用户标识符中可以出现下划线和数字,它们都可放在用户标识符的开头

17、C语言的关键字是由C语言规定的、具有特定功能的固定字母组合,也称为保留字,共计32个。

18、变量是在程序执行期间其值可以改变的量,必须先定义后使用。

19、变量被定义后没有赋值,其单元内容不可以使用,是内存中的随机数。

20、变量的初始化是指在定义时对其赋值。

21、变量的名字代表内存中的存储单元;变量名和内存中的存储单元相对应,通过变量名来存、取存储单元的内容。

22、定义变量时的变量的类型决定变量占据存储单元的大小和数据的表数范围。

23、变量中只能存放指定类型的数据,程序运行过程中可以改变变量的类型。

24、当存储单元溢出时,数据的值不会受到影响,只会丢掉超过的部分。

25、当有若干运算符同时出现在表达式中时,运算符的优先级规定了运算的先后次序。

26、当若干具有相同优先级的运算符相邻出现在表达式中时,结合性规定了运算的先后次序。

27、在C语言中,对于整型变量采用有符号数和_________数两种存储形式。

28、当赋值语句右边表达式类型与左边变量类型不一致时,以_______类型为准。

33、在C语言中的实型变量分为float型和double型,按浮点数进行存储,分为数符、_______和尾数几部分。

37、C语言中用一个符号代表一个常量的量称为________常量。

第3周 数据的输入与输出

3.1 数据的格式化输出随堂测验

1、在调用printf函数输出数据时,当数据的实际位宽大于printf函数中格式指定宽度时,将按照数据的实际宽度输出数据。

3.2 数据的交互式输入随堂测验

1、输入时可以指定数据的宽度,但不允许指定精度。

3.3 单个字符的输入输出随堂测验

1、单个字符既可以以c格式符也可以以d格式符输出,前者是输出这个字符,后者是输出这个字符的ASCII码值。

10、C语言中本身没有提供专门的输入输出语句,输入输出通过调用函数完成。

11、输入数据时不能指定数据的精度。

12、输入数据时不可以指定数据的宽度。

13、混合输入数值型数据和字符型数据时,数据之间不能加空格。

14、使用getchar()函数可以一次接受多个字符。

15、在使用标准的输入/输出库函数时,应该在程序的开头使用编译预处理命令“#include <stdio.h>”。

16、字符型数据存储其ASCII码值,占一个字节,在ASCII范围内与整数通用。

17、输入数据时可以有多种方法分隔多个输入数据。

18、程序的顺序结构是指按照解决问题的顺序写出相应的语句,程序执行顺序按照自上而下,依次按顺序执行。

19、若在输入格式控制字符串中包含普通字符,则输入时必须照原样输入普通字符,否则将导致输入错误。

27、在格式说明符中,当%后边出现______,表示要跳过相应的数据,是附加说明符。

28、若要将数据以指数形式输出,应该选择______格式符。

3、求一元二次方程的两个实根

第4周 选择结构程序设计

4.1 关系运算与逻辑运算随堂测验

1、算术运算符的优先级高于关系运算符。

4.2 程序分支结构—if-else语句随堂测验

4.3 多重分支结构-switch语句随堂测验

15、所有逻辑运算符的优先级都高于关系运算符。

16、在switch语句中,switch与case后的表达式可以为任意类型。

17、在if语句中,if后面的表达式可以是关系表达式与逻辑表达式,而不能是算术表达式。

18、在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行。

19、switch语句嵌套使用时,一条break语句可用于跳出所有嵌套switch语句。

21、条件运算符的优先级低于算术运算符、关系运算符及逻辑运算符,高于赋值运算符和逗号运算符。

22、同一个switch语句中各个常量表达式的值必须互不相等,且只能是常量。

23、C语言没有逻辑型数据,关系表达式的真、假是以数值“1”代表“真”,以“0”代表“假”,即非0为真(true),0为假(false)。

24、并非所有的if语句都有等价的switch语句,switch语句只能用来实现以相等关系作为选择条件的多分支结构。

33、为了避免嵌套条件语句的二义性,C语言规定else与其前面最近的_____语句配对。

3、百分制成绩转换为五级分制成绩

第5周 循环结构程序设计

11、while循环语句至少无条件执行一次循环体。

12、for循环语句只能用于循环次数已经确定的情况。

13、do while循环语句中,根据情况可以省略关键字while。

14、do while循环语句至少无条件执行一次循环体。

15、for循环语句先判断循环条件是否成立,然后再决定是否执行循环体。

17、for循环的三个表达式中间用逗号相分隔,并且不能省略。

18、do while循环语句的特点是先执行循环体,然后判断循环条件是否成立。

19、while循环语句和do while循环语句在任何情况下都可以互换。

20、for循环的三个表达式中间用分号相分隔,第一个表达式执行一次。

1、用for语句实现判断并求和。

2、用do while 语句实现从键盘输入一组整数,求平均值。

第6周 循环程序设计实例

8、continue语句用于终止循环体的本次执行。

9、break语句能够终止当前进行的多层循环。

11、对于for(表达式1;表达式2;表达式3)语句来说,continue语句意味着转去执行表达式3。

12、continue语句在循环体中出现,其作用是结束本次循环,接着进行是否执行下一循环的判定。

13、goto语句和break语句都能够实现使程序执行的流程从循环体内跳至循环体外。

14、break终止包含该语句的最内层循环。

15、在循环体内又包含一个循环语句,称为循环嵌套。

16、for(表达式1;表达式2;表达式3),当执行循环体内的continue语句时,意味着转去执行表达式2。

17、程序中遇到goto语句无条件跳到标号指定的位置继续执行。

1、求两个整数的最大公约数。

第7周 一维数组及其引用

12、在对全部数组元素赋初值时,可以不指定数组长度。

13、数组定义int a[10]; 表示数组名为a,此数组有10个元素,首元素为a[0]。

14、如果对数组不赋初值,则数组元素取随机值。

15、引用数组元素时,其数组下标的数据类型允许的是:整型常量或整型表达式。

17、数组名的规定与变量名不相同。

18、一个数组可以存放许多不同类型的数值。

19、数组的下标通常是float型。

20、数组可以声明为任何数据类型。

2、找出一维整型数组中的次最大值。

3、调整最大值的位置。

第8周 二维数组与字符数组

shell是用户与系统交互作用的界面。shell是一种命令解释程序,同时也是一种高级程序设计语言

其中:Bash在日常工作中被广泛使用;同时,Bash也是大多数Linux系统默认的Shell;

1.1、需要耗费大量资源的任务,特别是对执行速度要求较高的场合

1.2、涉及大量的数学计算

1.3.、关键性应用(数据库,网站等)

1.4.、设计图形或者GUI的应用

1.5.、需要直接访问硬件

1.6.、开发闭源的应用(相对于开源)

文件系统:Linux 的文件系统是一个包含了目录和文件的分层的组织结构,位于最顶端的叫做根目录(root directory),用斜杠/ 来表示

目录: 是一种包含目录项的文件,每个目录项中都包含了文件名

文件名: 目录的内容称为目录项,目录项包含了文件名,只有两种字符不允许出现在文件名中:斜杠,空字符(ASCII 值为0),斜杠用于分隔路径中的文件名,空字符用来表示路径的结尾。文件名的长度通常可以达到255个字符

路径: 一系列文件名连起来,用斜杠分隔,就叫做路径,路径用于表示文件的位置;以斜杠开头的路径叫做绝对路径,否则为相对路径,相对路径相对于当前工作目录

返回码:所有命令都有一个返回值,用0-255之间的整数来表示;脚本就是一个命令,它也有返回值,另外,脚本里面的函数也有返回值

read是一个buildin命令,主要完成对参数的赋值,类似C语言中的scanf;

其不仅可以赋值变量,还可以赋值数组;

其输入不仅是屏幕,还可以是文件描述符

3、判断系统是否存在 root 用户

5、判断输入数字的大小

6、从标准输入获取一个数字,并根据其大小输出指定字符串

测试 while 关键字后面一条命令的返回码,条件为真时,程序读入while循环体中的指令;0为真。循环体如下:

continue --终止当前循环,开始下一个循环

break --终止当前循环,并退出循环体

# vim test.sh --脚本运行指定的时间,时间一到就退出;单位为 s

# vim test.sh --循环读取文件的每一行,并计算每行的字符个数

# vim test.sh --创建一个不尽的循环,要求循环运行1分钟后自动终止

# vim test.sh --计算出1000 之内的偶数的和;不能使用管道,因为管道会生成子进程

在一系列由分隔符隔开的字符串中,按顺序每次取其中之一,当取完之后,循环结束

每次取出的字符串会被保存在一个变量中,可以在循环体内使用该变量

由分隔符隔开的字符串可以通过以下方法提供:

1、手动输入字符串,用于循环指定次数

4、由shell 展开而生成,循环目录中的文件

5、打印出/dev 下面所有以 loop 开头的文件的文件名

6、计算出1000 之内的偶数的和

8、获取局域网内所有电脑的IP 和MAC 地址的对应表

注意:乘法的处理;被除数为0时的处理

11、把指定目录下的某些文件复制到指定的目录,要求:

#1. 从命令行参数接收两个参数,分别是源目录和目标目录

#2. 如果源目录不存在,应该报错

#3. 如果目标目录不存在,就创建一个

#4. 如果目标已经存在但不是目录,就报错

#5. 只复制常规文件,软链接文件

#6. 对于常规文件,只复制大小小于1M 的文件

以上就是什么是shell?shell常见种类的介绍的详细内容,更多请关注php中文网其它相关文章!

1-1 硬件组成随堂测验

3、IA-32处理器中被称之为累加器通用寄存器是EAX。

4、IA-32处理器中ESP是堆栈指针寄存器。

5、IA-32处理器支持8个32位通用寄存器。

1-1 硬件组成随堂测验

3、物理地址也称逻辑地址,也是虚拟地址。

4、应用程序一般主要涉及代码段、数据段和堆栈段。

5、IA-32处理器的逻辑地址包括偏移地址。

1-1 硬件组成随堂测验

3、IA-32处理器的CS是代码段寄存器。

4、IA-32处理器的DS是数据段寄存器。

5、IA-32处理器的ESP与SS配合指向堆栈段当前栈顶。

1-2 程序格式随堂测验

3、指令一般由操作码和操作数组成。

4、在MASM的语句语法中,指令的目的操作数一般在左边,源操作数在右边。

5、IA-32处理器的指令所采用的二进制编码长度均是32位(Bit)。

1-2 程序格式随堂测验

3、MASM的语句分成执行性语句和说明性语句。

4、MASM汇编语言的分隔操作数使用英文逗号,不能用中文逗号。

5、MASM汇编语言的注释用分号开始,无所谓英文分号还是中文分号,都可以。

1-2 程序格式随堂测验

3、“END”伪指令仅说明汇编到此结束,并不具备返回操作系统的功能。

4、汇编结束也就是程序执行终止。

5、为IA-32处理器编程只应该使用8086的16位指令。

1-2 程序格式随堂测验

4、要显示字符串,可以使用本课程提供的DISPMSG子程序。

5、C语言使用函数名(含参数)就是调用函数,IA-32处理器需要使用“CALL”调用指令实现调用。

1-3 开发过程随堂测验

3、32位Windows控制台与16位模拟DOS窗口的界面和基本功能相同,所以本质上就是同一个程序。

5、32位中文Windows XP/7/8等操作系统中,Windows控制台窗口也支持中文的输入输出。

1-3 开发过程随堂测验

3、本课程提供一个“MAKE32.BAT”批处理文件用于快速开发汇编语言程序。

4、如果源程序文件没有错误,列表文件就为空。

5、开发过程中生成的目标模块文件(.OBJ)与列表文件(.LST)一样都是文本性质的文件,可以使用文字编辑软件打开。

21、尽管用汇编语言生成的执行代码较庞大,但其能够直接有效地控制硬件。

22、MASM规定用后缀字母H或h表达十六进制数据。

23、对32位字长的IA-32处理器来说,其主存不能采用8位(字节)编址。

24、IA-32处理器采用以字节为基本存储单位为主存空间编址。

25、主存中的一个存储单元的物理地址不是唯一的。

26、指向程序堆栈区的段寄存器是SS。

27、IA-32处理器读取指令,一定是在代码段中。

28、汇编程序使用的保留字,例如寄存器名称等,是不能用作用户定义的标识符的。

29、IA-32处理器按逻辑段组织程序,数据变量应该且必须在数据段中。

30、指令指针EIP寄存器属于通用寄存器。

31、源程序中只能用标号start表示程序的起始执行点。

32、使用简化段定义源程序格式,必须具有.model语句。

33、利用“END”伪指令就可以结束程序执行,返回操作系统。

34、伪指令“END”仅说明汇编到此结束,并不具备返回操作系统的功能。

35、采用汇编语言书写的一个ASM源程序文件,需要使用汇编语言程序转换为OBJ目标代码文件。

36、汇编程序(例如MASM)一般都提供大量的函数(过程)供程序员调用,所以汇编语言程序员通常不需要直接利用操作系统的资源。

37、MASM汇编语言的注释用分号开始,但不能用中文分号。

38、MASM汇编语言用逗号分隔两个操作数或者参数,英文逗号或者中文逗号都可以。

2-1 常量表达随堂测验

3、MASM中,字符用单引号括起,字符串用双引号括起。

4、MASM中,使用“=”或者“equ”都可以定义符号常量。

5、按照MASM语法,“AH”是一个8位寄存器,“0AH”表达十六进制数。

2-1 常量表达随堂测验

3、汇编语言中,表达真值“100”,可以使用二进制“B”表达。

4、小写字母“d”作为字符,它在主存中与十六进制数“64H”是一样的。

5、汇编语言中,表达真值“13”,可以使用十六进制数“0DH”表达。

2-2 变量定义随堂测验

2、MASM中定义的变量保存在通用寄存器中。

3、变量定义的参数表中出现“?”符号,说明该存储空间没有赋初值。

4、变量定义中的操作符“dup”用在初值表中,表示多个重复的参数。

5、MASM定义变量必须有变量名,否则不能定义。

2-2 变量定义随堂测验

4、定义字符串也可以使用字节变量定义伪指令“BYTE”。

5、数值“356”可以作为BYTE伪指令定义的变量初值。

2-2 变量定义随堂测验

3、MASM伪指令“word”定义的字量数据是指16位数据。

4、语句“word ?”表示预留一个字节存储空间。

5、数值“356”可以作为WORD伪指令定义的变量初值。

2-2 变量定义随堂测验

3、伪指令“DWORD”定义的32位变量要占用4个字节存储空间。

4、伪指令“dword”只能定义无符号整数为变量初值。

5、MASM定义无初值变量使用“?”符号,但通常汇编程序填入0。

2-3 变量应用随堂测验

3、所谓小端方式是指数据的低字节部分保存于存储器的低地址单元、高字节数据部分保存于存储器的高地址单元。

4、主存储器采用字节编址,意味着每个存储单元具有一个地址、保存一个字节的数据。

5、存储多字节数据采用小端方式一定比大端方式好,因为没有处理器采用大端方式。

2-3 变量应用随堂测验

3、变量的地址属性是指变量所在存储单元的逻辑地址,包括段基地址和偏移地址。

2-3 变量应用随堂测验

3、定义变量后,变量名就具有了类型属性。

4、定义为双字类型的变量,不能按字节或字类型访问。

5、本课程提供的子程序DISPRD可以显示8个32位通用寄存器的内容。

30、人们经常采用十六进制形式表达数据,这是因为计算机内部寄存器采用这种进制。

31、已知是采用BCD编码的二进制串,它表达整数的真值64。

32、已知是采用BCD编码的二进制串,它表达整数的真值101。

33、0307H是一个非压缩BCD码,它表达的真值是37 。

34、对于常数41H,在汇编语言中表达成字符’A’也是正确的,因为’A’的ASCII码就是41H。

35、在文字编辑软件中,按下键盘上的空格键往往显示空白,所以ASCII的空格编码不是字符编码。

40、IA-32处理器采用小端方式存储多字节数据。

42、“TYPE EDX”的结果是一个常量,等于2。

43、伪指令ORG只能用于数据段,指明变量开始的偏移地址。

3-1 立即数寻址随堂测验

1、寻址方式的含义是指通过地址访问指令或数据的方法。

2、数据寻址的含义是指通过地址访问指令操作数(数据)。

3、指令寻址是指确定要执行的下一条指令的地址。

4、指令操作数来自处理器的寄存器,被称为寄存器寻址。但把指令操作数保存于处理器的寄存器,就不能被称为寄存器寻址。

5、变量指向存储单元,所以访问变量就是存储器寻址。

3-1 立即数寻址随堂测验

3、立即数是指从指令的机器代码中直接取得的操作数。

4、立即数寻址方式只用于目的操作数。

5、语句“mov edx,type dvar”中(dvar是一个双字变量)源操作数采用立即数寻址。

3-2 寄存器寻址随堂测验

2、语句“mov eax, ebx”的两个操作数都是采用寄存器寻址方式。

3、语句“mov dx, ds”的源操作数不是寄存器寻址方式。

4、语句“mov bvar, cl”目的操作数的寻址方式是寄存器寻址方式。

3-3 存储器寻址随堂测验

2、存储器寻址的操作数当然在主存储器中了。

3、IA-32处理器的存储器寻址中,8个32位的通用寄存器都可以作为基址寄存器使用。

4、堆栈操作默认是由SS寄存器指示的段中。

5、存储器操作数由逻辑地址指示,一定要表达出段基地址。

3-3 存储器寻址随堂测验

2、直接寻址把存储器操作数的有效地址直接编码进指令的机器代码中。

3、MASM规定直接寻址只能用具体的地址值直接表达,不能使用变量名等形式表达。

4、在MASM语法中,语句“mov eax,dvar”和“mov eax,[dvar]”是同一条指令,其中dvar是一个双字类型的变量(名)。

3-3 存储器寻址随堂测验

2、存储器的寄存器间接寻址中,寄存器相当于一个地址指针的作用。

3、MASM中,“EBX”和“[EBX]”都表示EBX寄存器的内容,含义是一样的。

4、指令“mov ebx, [ebx]”的源操作数采用寄存器间接寻址。

3-3 存储器寻址随堂测验

4、寄存器相对寻址有一个位移量和一个寄存器内容相加形成存储器操作数的有效地址。

16、数据寻址的含义是指通过地址访问指令操作数(数据)。

17、立即数寻址只会出现在源操作数中。

18、存储器寻址方式的操作数当然在主存了。

19、寄存器间接寻址方式,操作数是在某一寄存器中。

20、IA-32处理器的有效地址是指存储器操作数的物理地址。

21、IA-32处理器的有效地址是指存储器操作数的偏移地址。

22、语句“mov edx, eax”的两个操作数都是采用寄存器寻址方式。

27、可以乘以比例的32位通用寄存器不包括ESP堆栈指针寄存器。

第4周 通用数据处理指令

4-1 数据传送类指令随堂测验

3、32位的IA-32处理器只支持32位数据操作,不支持8位或16位数据操作。

4-1 数据传送类指令随堂测验

3、指令“lea eax,[ebx]”是一条语法正确的指令。

4-1 数据传送类指令随堂测验

3、IA-32处理器指令“PUSH EAX”执行后,寄存器EAX内容被传送到当前栈顶。

4、堆栈操作指令也属于传送类指令,而指令“pop ecx”中,寄存器ECX是源操作数。

5、指令“PUSH EDI”执行后,寄存器ESP被加4。

4-2 算术运算类指令随堂测验

2、进行有符号整数的加减运算,判断是否超出运算范围可由溢出标志OF判断。

3、进位标志CF属于IA-32处理器的状态标志,而溢出标志OF不属于状态标志。

4、下面说法是否正确:进行8位加法“99H+31H”,会使CF=1。

5、IA-32处理器完成一条加减运算指令,如果是针对无符号数的加减运算就影响CF标志,而如果是有符号数的加减运算就影响OF标志。总之,加减运算只会影响CF或OF之一,不会同时进行设置。

4-2 算术运算类指令随堂测验

3、IA-32处理器对符号标志SF的定义是:运算结果最高位为1,则SF=1;否则SF=0。

4、IA-32处理器设计零标志ZF反映运算结果是否为0,结果为0,则ZF标志为1。

5、IA-32处理器的奇偶标志PF关注的是32位结果中“1”的个数是偶数还是奇数。

4-2 算术运算类指令随堂测验

3、加法指令ADD的运算结果影响状态标志的取值。

4、IA-32处理器的ADD加法指令只进行32位数据的加法操作。

5、IA-32处理器的ADD加法指令进行16位数据的加法,如果有进位则自动进入高1位数据结果中。

4-2 算术运算类指令随堂测验

3、SUB是算术运算类指令。

4、IA-32处理器的SUB减法指令只进行整数的减法操作。

5、减法指令SUB的运算结果影响除进位CF标志之外的其他状态标志。

4-2 算术运算类指令随堂测验

3、指令“dec [ebx]”没有语法错误。

4、加1指令INC和减1指令DEC的运算结果影响除进位CF标志之外的其他状态标志。

5、“NEG EAX”指令的功能是用0减去EAX内容,差值结果保存在EAX。

4-3 位操作类指令随堂测验

4-3 位操作类指令随堂测验

3、逻辑左移和算术左移的功能相同。

4、逻辑右移和算术右移的功能相同。

4-3 位操作类指令随堂测验

3、IA-32处理器指令ROL是指不带进位的循环左移指令。

4、不带CF标志的循环移位指令ROL和ROR执行后不会影响CF标志。

5、带进位循环右移指令RCR执行后,CF标志被设置为0。

30、指令“mov bx,eax”的错误原因是数据类型不匹配。

32、堆栈的操作原则是“先进后出”,压入数据是PUSH指令、弹出数据是POP指令。

33、空操作NOP指令其实根本没有指令。

34、NOP是空操作指令,所以处理器并不执行该指令。

37、IA-32处理器系统中,堆栈的数据压入和弹出操作可以是字节、字或双字为单位。

38、指令“mov [esi],[edi]”是错误的,因为IA-32处理器不存在这种传送组合。

41、进位和溢出标志都表达结果超出范围,所以加法运算有溢出,一定也进位了。

42、进行有符号整数的加减运算,判断是否超出运算范围可由进位标志CF判断。

43、ADD指令的某个加法运算结果使标志ZF=1,则标志SF为0。

44、ADD指令的某个加法运算结果使标志ZF=1,则标志PF为0。

45、虽然ADD指令和SUB指令执行后会影响标志状态,但执行前的标志并不影响它们的执行结果。

46、80减90(80-90)需要借位,所以执行结束后,进位标志CF=1。

49、指令“neg eax”的功能是求EAX的绝对值。

5-1 移位实现乘法随堂测验

3、对二进制表达的整数来说,左移一位相当于数值乘以2。

4、对二进制表达的整数来说,右移一位相当于数值除以2。

5、理论上,任意两个整数相乘都可以移位、配合加减运算实现。

5-1 移位实现乘法随堂测验

3、对一个64位数据进行一位的左移操作,IA-32处理器可以使用一条SHL指令实现。

4、对一个64位数据进行一位的左移操作,IA-32处理器需要使用两条SHL指令实现。

5、已知qvar是用qword定义的64位类型的变量,IA-32处理器的指令“shr qvar,1”存在语法错误。

5-2 自然数求和随堂测验

4、用语句“sum qword ?”定义的一个4字(64位)变量sum,与32位EAX类型不一致,所以“mov sum, eax”存在语法错误。

5、IA-32处理器的乘法指令“mul ebx”产生的乘积是64位的。

5-2 自然数求和随堂测验

3、MASM中,助记符“CPUID”是IA-32处理器的一条处理器识别指令,该指令能够反馈处理器的有关信息。

4、IA-32处理器上,在EAX=0时执行CPUID指令时通过寄存器ECX、EDX和EBX返回处理器厂商字符串。

5、程序的顺序结构是不含分支、循环和调用的一条语句(指令)、一条语句(指令)逐个顺序执行的程序结构。

8、无符号数在前面加零扩展,数值不变。

9、有符号数前面进行符号扩展,位数加长一位、数值增加一倍。

10、符号扩展将数据位数加长,自然数据大小也相应增大。

11、算术右移指令执行的操作是:符号位不变,并顺次右移1位,最低位移出。

12、数据左移运算是低位向高位移动,最低位补0。

13、SHL指令左移一位,就是乘10。

14、因为EDX保存的是无符号整数,所以指令“shr edx,1”可以换做“sar edx,1”。

15、在明确EDX保存的是一个正整数的条件下,指令“SHR EDX,1”与“SAR EDX,1”完成的功能相同。

16、在一段顺序结构的程序中,通常不应该包含条件转移指令。

17、数据段有语句“sum qword ?”,代码段指令“mov sum, eax”并不存在语法错误。

18、程序的顺序结构是不含分支、循环和调用的一条语句(指令)、一条语句(指令)逐个顺序执行的程序结构。

6-1 转移指令随堂测验

3、指令寻址是指一条指令执行后,确定执行的下一条指令的位置的方式。

4、IA-32处理器中,指令指针EIP或者还包括代码段寄存器CS值的改变将引起程序流程的改变。

5、IA-32处理器中,执行一条指令后,设计指令指针EIP自动增量,实现了指令的顺序寻址。

6-1 转移指令随堂测验

3、已知label是某条之前的标号,指令“jmp label”的功能是让处理器执行label指示的那条指令。

4、JMP指令的功能对应C语言的goto语句,按照高级语言的结构化思想,汇编语言中也不应使用JMP指令,处理器可以不必设计JMP指令。

5、IA-32处理器设计使用一个字节表达位移量的相对寻址的短转移是为了减少机器代码的长度,提供更紧凑的指令代码、占用更少的存储空间。

6-1 转移指令随堂测验

3、执行条件转移指令Jcc,如果条件cc不成立,则顺序执行下一条指令。

4、对条件ZF=1条件成立的条件转移指令,MASM设计了两个助记符JZ和JE,其实是一条指令用了2个助记符,纯属“画蛇添足”。

5、条件转移指令Jcc利用的条件需要利用CMP、TEST等影响标志的指令产生。

6-1 转移指令随堂测验

3、对二进制数来说,偶数的最低位一定是0。

4、判断进位标志CF=0发生跳转,使用JNC指令。

6-1 转移指令随堂测验

3、一个程序片段中,出现了JMP或Jcc指令,应该就不再是顺序程序结构了。

4、测试指令TEST对操作数进行的是“逻辑与”操作。

6-2 单分支结构随堂测验

3、这里的“单分支结构”是指条件不满足顺序执行分支体,条件满足跳过分支体执行。

4、在汇编语言中用Jcc指令形成单分支结构,条件满足顺序执行分支体。

5、不论EAX保存什么整数,指令“neg eax”都可以实现求EAX绝对值的功能。

6-2 单分支结构随堂测验

3、JB和JA指令都属于处理器的程序流程控制指令。

4、同一个英文字母其大小写,在ASCII表中的数值相差32(=20H)。

5、大写字母“A”的ASCII值是61H。

6-3 双分支结构随堂测验

4、这里的“双分支结构”是指条件满足和不满足各自执行一个分支体,但最后都从共用的出口开始执行后续指令。

5、在双分支程序结构中,顺序执行的分支体最后需要JMP指令,目的是使第一个分支体执行结束之后,跳过第二个分支体,避免误入第二个分支体中。

6-3 双分支结构随堂测验

3、通用处理器中普遍采用补码表达有符号整数。

4、用8位进制补码表达一个有符号整数,数值“-150”无法表达。

5、两个有符号整数加减运算后,结果是否溢出应使用JO或JNO指令判断。

22、指令指针EIP或者还包括代码段寄存器CS值的改变将引起程序流程的改变。

23、CS不变,只改变EIP值,不能改变程序的执行顺序。

24、JMP指令的功能对应C语言的goto语句,按照高级语言的结构化思想,汇编语言中也不应使用JMP指令,处理器也不必设计JMP指令。

25、指令“jmp ebx”的转移目标地址来自寄存器EBX。

26、条件转移指令JC和JB虽然是两个助记符,但却是同一个指令。

27、执行JNZ指令发生转移的条件是ZF=1 。

28、执行JNS指令顺序执行的条件是SF=1 。

29、对无符号数和有符号数进行加减采用同样的指令,所以比较两者大小的条件转移指令也可以采用同样的指令。

30、JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。

32、采用偶校验对数据编码,8位二进制编码“”符合偶校验规则。

33、在双分支程序结构中,顺序执行的分支体最后需要JMP指令,目的是使第一个分支体执行结束之后,跳过第二个分支体,避免误入第二个分支体中。

34、汇编语言编写双分支结构的程序通常要使用Jcc指令进行分支,顺序执行的分支体最后需要JMP指令,该JMP指令无论如何分支都一定会被执行。

7-1 循环指令随堂测验

3、IA-32处理器的LOOP指令常用于增量计数的循环控制。

4、IA-32处理器的LOOP指令包含有对ECX寄存器减1的功能。

5、IA-32处理器的LOOP指令先对ECX是否为0进行判断,然后再执行对ECX寄存器减1的操作。

7-1 循环指令随堂测验

7-1 循环指令随堂测验

1、汇编语言程序中,只能实现“先循环、后判断”,不能实现“先判断、后循环”结构。

2、“先循环、后判断”的循环程序结构,循环体至少执行一次。

3、“先判断、后循环” 的循环程序结构,循环体可能一次都不执行。

7-2 计数控制循环随堂测验

3、LOOP指令适合实现减量计数控制循环。

4、采用寄存器间接寻址从头开始访问数组的每个元素,初始通常应将该寄存器赋值为数组首地址。

5、采用寄存器相对寻址从头开始访问数组的每个元素,初始可以将该寄存器赋值为0。

7-3 条件控制循环随堂测验

3、条件控制循环通常需要使用条件转移指令进行是否继续循环的判断。

4、通常情况下,“先判断、后循环”的循环程序结构可以修改为“先循环、后判断”的循环程序结构。

5、在汇编语言程序层面,条件控制循环结构与分支结构有相通的地方,循环体可以看做是需要多次执行的分支体。

7、若ECX=0,则LOOP指令和JECX指令都发生转移。

8、IA-32处理器的LOOP指令常用于增量计数的循环控制。

9、IA-32处理器的LOOP指令包含有对ECX寄存器减1的功能。

10、判断循环是否结束的循环控制部分只能安排在循环体之后。

11、循环初始值应该属于循环体之中。

12、通常循环体中应该包含进行循环条件修改的代码。

13、采用寄存器相对寻址从头开始访问数组的每个元素,初始可以将该寄存器赋值为0。

8-1 子程序设计随堂测验

3、主程序调用子程序使用CALL指令。

4、子程序返回主程序利用RET指令。

5、RET指令通常应该是子程序最后一条执行的指令。

8-1 子程序设计随堂测验

2、IA-32处理器的CALL指令压入堆栈的返回地址是CALL指令下条指令的地址。

3、返回指令RET从当前堆栈顶部获得返回地址。

4、子程序开始压入EBP保护,但返回前忘记弹出,这会导致原EBP内容出错,但子程序还可以正常返回。

5、语句“call next”之后,接着是语句“next: pop eax”,执行这两个指令后,EAX保存当前指令、即pop指令,也就是标号next的地址。

8-1 子程序设计随堂测验

4、过程定义PROC是一条处理器指令。

5、子程序设计无需关注参数传递问题。

8-2 参数传递随堂测验

3、寄存器传递参数的方法只适用于传递主程序给子程序的入口(输入)参数。

4、子程序中无论在任何情况下都应保存所有的寄存器、包括出口参数的寄存器。

5、对数值0~9,只要加30H,就依次成为字符'0'~'9'的ASCII码。

8-2 参数传递随堂测验

2、这里的共享变量对应C/C++语言的全局变量。

3、对于大量保存在主存储器缓冲器的参数,通常只能通过传递地址的方式,也被称为“传递引用”。

4、共享变量的参数传递方式只适合传递子程序返回给主程序的出口(输出)参数。

5、输入二进制数的正确数字应该只有0和1。

8-2 参数传递随堂测验

3、在80x86处理器上,C语言进行函数调用带入的参数实质上就是采用堆栈传递参数。

4、如果删除主程序指令“add esp,8”,但子程序中“ret”指令改为“ret 8”,示例程序仍能正确完成预期功能。

5、IA-32处理器中,利用EBP(或ESP)、而不是EBX、ESI等间接或相对寻址访问堆栈,是因为EBP(或ESP)间接或相对寻址的默认逻辑段是堆栈段。

8-3 程序模块随堂测验

3、源文件包含的方式需要将多个源程序文件分别汇编。

4、模块连接中的“模块”是指汇编(编译)后形成的目标模块OBJ文件。

5、MASM中使用PUBLIC伪指令说明某个变量、子程序等可以被其他模块文件调用。

8-3 程序模块随堂测验

3、加入子程序库的文件通常是子程序的源程序文件。

4、子程序库和子程序库文件包含的方法本质没有区别,只是连接过程的具体操作不同罢了。

5、存入子程序库的子程序都应该利用PUBLIC说明,表示其他程序模块可以调用。

8-3 程序模块随堂测验

3、宏调用在汇编时进行程序语句的展开,不需要返回。

4、MASM中,宏需要先定义后使用,且不必在任何段中。

5、宏也封装了一段程序,所以与子程序本质上相同。

15、CALL指令的执行并不影响堆栈指针ESP。

16、指令CALL的执行涉及堆栈操作。

17、子程序返回主程序使用RET指令。

18、IA-32处理器使用CALL调用子程序。

19、返回指令RET执行时,从当前堆栈顶部弹出返回地址。

20、过程定义PROC是一条MASM伪指令。

21、指令“RET i16”返回子程序的运行结果i16。

22、子程序不能进行嵌套调用。

23、带有出口参数的寄存器,子程序不必在进入时进行保护,所以在返回主程序前也不必恢复。

24、进入子程序后,将EAX、EBX、ECX和EDX按顺序压入堆栈,则子程序返回前弹出这些寄存器的顺序还是EAX、EBX、ECX和EDX。

25、子程序的开始时使用PUSH压入寄存器的顺序应于返回前POP寄存器的顺序相同,这样才能保证寄存器恢复正确。

26、子程序需要保护寄存器,包括保护传递入口参数和出口参数的通用寄存器。

27、分配在数据段的共享变量可用于主程序与子程序之间传递参数,这类似C语言的全局变量。

28、堆栈操作需要保持压入和弹出的区域平衡,但当使用堆栈将主程序参数传递给子程序时就不必了。

29、模块连接中的“模块”是指汇编(编译)后形成的目标模块OBJ文件。

30、使用宏进行源程序的编写,不仅简化了源程序的编写,同时也将其生成的目标代码变的更小。

31、利用INCLUDE包含的源文件实际上只是源程序的一部分。

32、宏调用与子程序调用一样都要使用CALL指令实现。

53、某个双字变量存放于存储器地址0403H~0406H中,对齐了地址边界。

55、进位和溢出标志都表达结果超出范围,所以加法运算有溢出,一定也进位了。

57、SHL指令左移一位,就是乘10。

58、JA和JG指令的条件都是“大于”,所以是同一个指令的两个助记符。

59、堆栈操作需要保持压入和弹出的区域平衡,但当使用堆栈将主程序参数传递给子程序时就不必了。

60、IA-32处理器的ESP与SS配合指向堆栈段当前栈顶。

61、汇编结束也就是程序执行终止。

62、按照MASM语法,“AH”是一个寄存器名,“0AH”表达十六进制数。

63、变量指向存储单元,所以访问变量就是存储器寻址。

65、堆栈操作指令也属于传送类指令,指令“pop ecx”中,寄存器ECX是源操作数。

66、IA-32处理器执行程序时,主程序调用子程序使用CALL指令。

67、在CF=1的情况下,SUB指令和SBB指令的功能相同。

68、无符号数在前面加零扩展,数值大小不变;有符号数前面进行符号扩展,位数加长一位、数值增加一倍。

69、对于常数41H,在汇编语言中表达成字符’A’也是正确的,因为’A’的ASCII码就是41H。

70、MASM汇编语言用逗号分隔两个操作数或者参数,英文逗号或者中文逗号都可以。

72、利用INCLUDE包含的源文件实际上只是源程序的一部分。

我要回帖

更多关于 c语言文件删除部分内容 的文章

 

随机推荐