C语言思考题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、机器语言:机器语言及其指令是计算机能够直接识别的执行的一组二进制代码。一条机器指令通常由操作码和操作数两部分构成。
2、汇编指令:是机器语言的符号化表示MOV
3、汇编语言:由汇编指令、汇编伪指令及汇编语言的语法规则组成。
4、汇编语言源程序:用汇编语言编写的程序
5、汇编程序:把汇编语言源程序翻译成目标程序的加工程序MASM
6、二、十、十六进制转换(掌握<256)练习1:117=(1110101)B练习2:1000 1011 B=(139)D练习3:1011 1000 0000 0101 B=(B805)H
7、机器数:是指计算机中的数据,可以分为无符号数和有符号数字长为N位时无符号数表示范围0≤N≤2N-1 当N=8时0≤N≤255
8、原码(8位):最高位为符号位(正数用0表示,负数用1表示),其他位为数值位
如X=+45=+0010 1101B [X]原=0010 1101B 如X=-45=-0010 1101B [X]原=1010 1101B
9、补码(8位):正数的补码与原码相同,负数的补码是将符号位取1,数值位逐位取反,未位加1。如X=+45=+0010 1101B [X]补=0010 1101B 如X=-45=-0010 1101B [X]补=1101 0011B
10、补码运算:是指对一个补码表示的数按位求反后再在末尾加1,可以得到与此数相应的符号相反的数的补码。例、已知[117]补=0111 0101B,[-117]补=1000 1011B,对[117]补作补码运算。解:因为[117]补=0111 0101B,按位求反后得1000 1010B,末尾加1得1000 1011B=[-117]补。[X+Y]补=[X]补+[Y]补[X-Y]补=[X]补+[-Y]补
12、BCD码:BCD码用4位二进制数表示1位十进制数。常用8421BCD码例:写出十进制314所对应的BCD码
13、8086/8088CPU:16位微处理器和16位数据总线,20位地址总线(寻址空间为1MB)。8088微处理器内部16位数据,外部8位数据,也称准16位机。8086/8088CPU的组成(功能方面):运算器、控制器、寄存器组
14、寄存器是CPU内部临时存放数据的部件,速度比内存快。(1)数据寄存器4个16位寄存器AX,BX,CX,DX,每个寄存器还可以拆成2个8位寄存器使用。
AX累加器:算术运算寄存器,用于存放操作数或运算结果。I/O指令中通过AX与外部交换数据。在乘除运算中指定存放被乘数与被除数,系统功能调用号。AX累加器可以分为AH、AL分别使用。
BX基址寄存器:可作为通用寄存器使用。在计算内存地址是,常作基址寄存器,作为通用寄存器还可以分为BH、BL分别使用。
CX数据寄存器:可作为通用寄存器使用。在循环和串操作指令中作隐含计数器。作为通用寄存器还可以分为CH、CL分别使用。
DX数据寄存器:可作为通用寄存器使用。在I/O操作中,DX用来存放I/O端品地址。在乘除法运算中与AX组合一起存放双字型数据。作为通用寄存器还可以分为DH、DL 分别使用。
(2)变址寄存器(2 个16位):SI 源变址寄存器.DI 目的变址寄存器
BP基址寄存器:用于存放栈中的操作数的偏移地址。SP堆栈指针寄存器:用来指示栈顶的当前位置(偏移地址)。
IP 指令指针寄存器(程序计数器):用于存放下一条指令所在偏移地址。与CS配合,用来确定程序中下一条指令的物理地址。
15、PSW程序状态字寄存器(标志寄存器):8088微处理器使用16位中的9位设置了9个标志。标志位SF、OF、CF、ZF的含义0010 1001B+1110 1000B=1 0001 0001B CF=1 OF=0 SF=0 ZF=0
16、段地址寄存器:段表示一块内存空间(大小可变),最大为64K字节,最小为16字
节。CS代码段寄存器,存放代码段的段地址。IP与其配合使用。DS数据段寄存器,存放数据段的段地址。BX,SI、DI默认与其配合使用。DS附加段寄存器。SS堆栈段寄存器,存堆栈段的段地址。SP、BP与其配合使用。
17、数据在内存储器的存放方式:存储字数据小端方式原则:(1)1个字占据2个相邻的存储单元;(2)低位字节存入低位地址,高位字节存入高位地址,(高高低低);(3)字的地址由其低地址来表示。
18、物理地址:8088有20根地址线,所以有220=1MB地址,地址编号从00000H,00001H,……,FFFFEH,FFFFFH。
19、逻辑地址:段的起始值必须是16的整倍数。1M地址最多可以有65536个段,最少为16个段。段的数值可以用段寄存器CS、DS、ES、SS来存放。
20、逻辑地址与物理地址的转换:物理地址=段地址×16+偏移地址(二进制)例:逻辑地址为1234H:5678H ,求物理地址。解:物理地址=12340H+5678H =12340H+5678H=179B8H
例:1个有6字节的数据区,它的起始地址为70A0:DDF6H,写出这个数据区的首物理地址和末字节的逻辑地址。解:数据区的首物理地址为70A0:DDF6H=70A00+DDF6H=7E7F6H 数据区的末逻辑地址为70A0:DDFCH
21、立即寻址(立即数寻址):立即寻址指的是操作数直接包含在指令中,数可以是8位或16位,也可是各种数制,还可以带单引号的字符。mov ax,1234h
22、寄存器寻址:寄存器寻址指的是操作数放在CPU内部的寄存器中,其寄存器名称在指令中给出。8位操作数,寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL 。16位操作数,寄存器可以是AX、BX、CX、DX 。MOV BX, AX 。MOV AH, BL 23、直接寻址:操作数存放在存储器中,操作数的偏移地址(有效地址EA)在指令中直接给出。默认段寄存器DS,mov ax,[1234h]
24、寄存器间接寻址:寄存器间接寻址的操作数在存储器中,指令使用的基址寄存器BX、BP或变址寄存器SI、DI存放操作数的有效地址。mov ax,[bx]
25、寄存器相对寻址:寄存器相对寻址方式的操作数在存储器中,操作数的有效地址由指令中给出的1个基址或变址寄存器的内容加上1个8位或16位位移量。mov ax,[bx+12]
26、基址变址寻址:基址BX,BP 变址SI,DI 。形式有:[BX+SI],[BX+DI],[BP+SI],[BP+DI] 。[BX][SI],[BX][DI],[BP][SI],[BP][DI] 。mov ax,[bx+si]
27、基址变址相对寻址:基址BX+变址SI+8或16位偏移地址。或基址BP+变址SI+8或16位偏移地址。mov ax,[bx+si+12]
28、下例指令的功能和助记词:指令:JMP、MOV、PUSH、POP、RET、LEA、ADD、ADC、INC、SUB、SBB、DEC、MUL、DIV、JE(JZ)、JNE(JNZ)、JA、JAE、JB、JBE、LOOP 伪指令:DB、DW、DUP、SEGMENT、ASSUME、ENDS、PROG、ENDP、END 汇编和连接:MASM、LINK 例定义一个字的伪指令是(dw )
29、子程序:是一段代码,并且这段一段代码可供多个程序调用。
特点是:1、每个子程序都对应有惟一的入口(即子程序名称),子程序以RET指令作为结束,以便正确返回主程序。2、子程序应具有通用性。子程序的操作对象通常采用寄存器或寄存器间接寻址等寻址方式,而不用立即寻址。3、子程序具有可浮动性。子程序中的转移指令应使用相对转移指令,而不能用绝对转移指令。4、进入子程序需要对现场进行保护,而在返回时应恢复现场
子程序的代码部分结构:(1)保护现场(即将可能用到的寄存器进栈);(2)根据入口参数,取得要处理的数据;(3)进行算法处理(即对数据的加工处理);(4)根据出口参数,将处理后的数据送至指定区域;(5)恢复现场;(6)用RET指令返回主程序。
30、DOS系统功能调用(1)01H功能入口参数:无调用方式:mov ah,1