ISA(指令集)
主要规定逻辑结构,而不关注底层硬件具体如何实现
该题答案:A
寻址方式
十种寻址用四位二进制表示寻址特征
变址寻址
变址寻址实现数组循环运算如下图所示
变址基址结合
相对寻址及其实际应用
相对寻址常用于跳转指令
如图所示
我们已知pc中存放的是当前执行指令的下一条指令的地址
如图所示,指令的A中存放的是偏移量
然后当指令取得当前指令时pc+1
然后根据相对寻址+pc的值,即当前指令的下一条指令,-4之后跳转回去了原本的M指令位置
再次执行循环
与基址寻址相比较,基址寻址常用于整段代码在内存中的浮动,而相对寻址主要用于某一程序段在一个程序内部的浮动(即代码可能会改变其原本的位置)
总结
汇编常用基础知识
函数调用时如何切换栈帧
如图所示,当我们运行到call指令时,读取完这个指令,他会ip++
1.此时IP的值指向的是跳转指令的下一条指令的地址
2.然后我们再将原本的esp的值-4再将IP旧值(返回地址)压入栈中
3.接着会执行无条件跳转指令mp add至add函数中
4.紧接着再add函数中,调用push语句,将ebp寄存器里面的值压入栈顶
ebp里面的值实际是他目前指向的地址,至此,我们原本的函数中的栈底和栈顶的位置已经全部记录在栈中
5.然后再mov esp的值至ebp的值,即调转栈顶栈底指针的指向
这样做的目的是,我们总能够再当前函数执行完毕后找到原本的函数的栈底基地址
一个栈帧的结构
栈帧的底部适用于存储局部变量的
存储变量的顺序和c语言中的顺序一样
使用返回值的汇编代码
ret的作用是找到ip旧址直接回到原本函数的执行流
总结
错题
答案:A
概念记忆,但注意CISC也可能采用流水技术
答案:C
关键在于认识第二章这个电路的各个标志位的生成逻辑,溢出的生成逻辑是最高位和次高位进位异或为1
本题答案为0
其中CF=Cin异或Cout
此时Cin=0Cout=1所以异或为1
答案:D
注意当补码和另一个数字相加时位数不够需要进行符号位补码
如下所示
但注意这种无符号数+补码的方式只能在这里生效
答案:B
要点,即搞明白取得多少数据,根据题意需要取得两个字节的数据到R1
而根据正常视角来看,先取出来的是高位的数据,而后取得是低位数据,因此
采用小端方式存储则后取出的数据会被先放入寄存器中
答案:A
指令寻址有如下两种方式进行指令寻址
其中绝对转移就是题目中所说的方式
过程大致为在主存中cpu取出一个指令然后将该指令放入IR
IR解析后将里面的地址码直接赋值给pc让他去跳转下一条指令的地址
间接寻址是将地址码和pc里面的值进行相加找到地址
答案:B
A:错误在降低译码难度
C: 程序控制由指令实现和寻址方式无关
答案:B
ISA仅仅规定软件可见,而加法器进位方式不属于他的范畴
中断隐指令是机器自动完成的,不属于程序控制指令