前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >未整理的计组复习笔记?

未整理的计组复习笔记?

作者头像
gojam
发布2019-05-14 17:13:18
1.1K0
发布2019-05-14 17:13:18
举报
文章被收录于专栏:gojam技术备忘录gojam技术备忘录

前言

计组是我听过的最脑阔疼的课。不过已经考过了orz以及,大家学的计组内容可能不一样,这篇复习包括的内容应该是比较简略的。

数据信息表示

(设机器字长8位)原码:正数符号位0,负数符号位1,其他7位按一般方法表示数的绝对值。

补码:用0到M区间的数表示,x的补码=(M+x)mod M。如果连同符号位放在数轴上,可以看出正数用前半部分数轴表示(00000001到01111111即2的7次方-1),负数用后半部分数轴表示(10000000到11111111即2的8次方-1),0用00000000表示,也可以看出来负数比正数多表示一个数字。补码可以用原码推出,其正数与原码一致,负数则保留原码符号位,剩下7位全部取反再加1;也可以保留原码符号位,从低位开始的第一个1保留,比第一个1高的位取反(两种方法其实一样)。

反码:正数的原码、反码、补码相同。负数可由原码保留符号位,其余7位取反得到。反码中00000000与11111111都表示0。

移码:移码的符号位与前面三种机器码相反,形式上与补码除符号位没有差异。从数轴上来看,它的前半段就是补码的后半段,后半段也是补码的前半段,因此0的表示是10000000。

浮点数(N=M*R^E):从高位到低位一般是符号位、阶码E(整数)、尾数M(小数)

IEEE 754标准:(单精度格式下)该标准中,N=M*2^E,符号位占1位,阶码E用移码表示(E占8位,表示范围-126~127),尾数M用原码表示,但尾数隐含最高位为1,原码表示1以后的部分,用23位表示了24位的信息。

汉字的表示:外码即输入码,机内码(内码)是汉字的基本编码,GB、GBK、BIG5、UNICODE都是汉字机内码。

校验码:奇校验和偶校验:在原有n位码后加一位校验位,使得n+1位码中1的个数为奇数/偶数。

数值运算及运算器

加减运算:补码加法可以直接相加,补码减法通过取减数相反数的补码转换为补码加法。参加运算的数符号相同,结果的符号位不同时则溢出,也可以根据符号位和最高有效位的进位判断,或用变形补码。

乘法、除法:原码一位乘和不恢复余数法,虽然做过题还是非常麻烦。

浮点运算:对阶(阶码较大的数M右移,大阶对小阶)、尾数求和/相乘、规格化

存储系统

RAM(Random Access Memory):随机存取存储器,用作主存和高速缓冲存储器。

ROM(Read Only Memory):只读存储器,即使断电也不会丢失数据

SAM(Sequential Access Memory):顺序存取存储器,只能按某种顺序存取,数据存取时间与介质上的物理位置有关,典型如磁带。

DAM(Direct Access Memory):直接存取存储器,介于RAM和SAM之间,存取数据时DAM直接指向一块区域,在这块区域中顺序查找或等待,也是磁盘的工作方式。DAM和SAM对数据的存取都与位置有关系,统称串行访问存储器。

计算机存储结构:

随机存取存储器和只读存储器:现在多为MOS(金属-氧化物-半导体)型半导体电路,RAM分为StaticRAM和DynamicRAM,前者用于寄存器(Register)和Cache,后者用于主存。SRAM芯片的一部分地址线选择存储矩阵中的行,另一部分地址线选择列,地址线可能接多位,如每条列线接4位,共4条列线,可对64列地址选择,芯片有片选端CS(低电平选择)和写使能控制端WE共同控制芯片状态。

8086寄存器与寻址方式

8086寄存器

8086寻址方式

汇编

https://cloud.tencent.com/developer/article/1425489

更多章节

由于已经考过了,不整理了,下面?是笔记:

第七章 输入输出系统及外围设备 主机: cpu--------总线             ram rom 接口 接口                             硬盘 外设 硬件接口传输的信息包括:地址、数据、命令、状态 端口:接口中能被cpu读写的寄存器R,一般有数据端口(数据缓冲寄存器)、命令端口(命令寄存器)、状态端口(状态寄存器,供CPU读取) 输入/输出接口分类: 1.按(接口到外设的)数据传送方式:串行、并行 2.按CPU访问外设的控制方式 3.按是否需要统一的控制时钟:同步、异步 4.按通用性:通用、专用 输入输出设备的编址: 1.独立编址:有重复,两套指令,内存容量=2^n,微机系统、单片机、嵌入式设备采用 2.统一编址:端口一般在高地址,内存容量小于2^n(地址线的数目) 主机与外设间信息传输的控制方式: 一、程序直接控制方式 1.立即程序传送方式:一般用于led、数码管、开关,需要设备时刻准备好,无需查询状态 2.程序查询方式:1⃣️cpu(一直)查询外设状态 2⃣️外设准备好传输数据  特点:成本低,适用广,硬件简单,CPU利用率低,实时性差 二、程序中断方式断: 按中断源分为外部中断(外设和机器故障引起,分为可屏蔽,一般I/O有数据请求,属正常事件,由CPU的INTR引脚发出,和不可屏蔽,一般预示机器故障由CPU的NMI引脚发出,不受IF控制,如低压中断,内存错误中断)和内部中断(由CPU内部引起的中断,如溢出中断,除数为0,软件调试单步中断,软件中断:INT中断) ISR入口地址形成方式:向量中断。256个中断源入口地址处于内存最低处,占用000H到3FFH(1K)。内部中断优先级最高,其次不可屏蔽中断(NMI),可屏蔽的外部中断(INTR),单步中断,普通软件 中断的嵌套:高打断低优先级 CPU中断过程:中断请求,中断判优,保护断点,转入InterruptServiceRoutine,中断返回 特点:外设主动,CPU利用率高,CPU外设并行工作,实时性好 应用:大多数设备 三、DirectMemoryAccess直接存储器存取方式 需要DMAController(硬件复杂),不需要CPU控制受DMAC控制,以硬件速度传输(只取决于硬件延时),速度快,一次传输一批数据,代价较高 DMA请求后CPU响应DMA信号,DMA控制总线和传输,DMA结束发送给CPU 四、通道控制IOP传输方式(大型机、巨型机使用) 通道是一种专门处理I/O请求的控制器,一次传输一个文件(数据量更大),代价更高,传输过程不需要CPU干预,整批文件传输完成向CPU报告中断 第四章 指令系统 控制信息:指令(程序) I  数据信息:操作数 指令系统:支持的指令的集合,分为CISC、RISC,不同cpu一般不兼容,x86兼容 指令格式:操作码(OP) 地址码(操作数、OD) 设计指令系统: 1.指令字长度:操作码和地址码的位数,一般不等长,和机器字长有一半、两倍、四倍的长度关系,新式RISC系统长度一般和机器字长一样  2.操作码结构:分为等长(n位支持2^n种指令)和可变长(所有指令需要唯一的操作码) 3.地址码设计: 分为四地址指令(操作码+4个操作数:A1和A2运算,结果存放到A3,A4为下一条指令地址,地址过多,现代计算机一般不采用,而使用pc寄存器,操作后自动+1,指向下一条地址)、 三地址指令(x86支持,RISC主要采用三地址指令,比四地址指令少了第四个操作数,8086不支持)、 两地址指令((A1)OP(A2)➡️A2,是x86计算机的主流指令)、 单地址指令(x86支持,常用,OP(A)➡️A,可以为双操作数指令(AX)OP(A)➡️AX,另一操作数隐含,可能位于累加寄存器AX)、零操作数指令(x86支持,常用,空指令操作、停机指令等,或是有操作数的堆栈指令,对固定的操作数如堆顶、标志R、累加R) 缩短指令的长度:4➡️3,增加pc寄存器。3➡️2,把其中一个设为目标寄存器。2➡️1,隐含寄存器R。也可以使用多种内存寻址,缩短内存od位数 操作数:一般有立即数10,200、寄存器R:AX,BX(使用二进制编号)、内存单元:需要地址、固定位置:标志R、累加R、栈顶 补充:机器字长,操作字长度,寄存器宽度,计算器位数,总线根数 8086-16位 386-32位 低级语言:机器语言(二进制,CPU直接识别,可执行文件的内容,如10010001)、汇编语言(又叫符号语言,使用助记符替代操作码,命名寄存器R,变量名替代内存单元地址,汇编即将源码翻译成机器指令,反汇编即反过程) 三、寻址方式:寻找(下一条)指令和操作数地址 1.指令寻址方式:分为顺序寻址方式(大多数指令)和跳转寻址方式(少量指令,取指令后pc也会递增,执行阶段修改pc值而跳转,如条件跳转、无条件跳转、子程序调用、子程序返回、中断调用、中断返回、循环指令) 2.数据寻址方式:隐含寻址(对隐含位置做操作,AX隐含寄存器,FLAG标志寄存器,栈顶)、立即寻址(立即数寻址,指令的地址码部分是操作数本身,如ADD AX,100)、寄存器R寻址(地址码字段给出寄存器编号,如ADD AX,BX)、直接寻址(指令直接给出操作数在内存中的地址)、内存间接寻址(指针的原理,地址码部分给出存放操作数地址存储单元的地址,需要读两次,速度太慢)、R间接(用编号读取地址,再读取操作数)、变址寻址和基址寻址(1ADD+1访问内存M,后者一般用于内存重定位,仅改变偏移)、相对寻址(特指PC与地址码给的偏移相加,一般用在跳跃式寻址)、堆栈寻址(操作数地址由栈顶指针SP指定) 四、8086寻址方式示例 汇编语言知识要求:CPU结构4、寻址方式4、指令系统4、伪指令8、编程技巧和程序结构9-13 8086CPU分为执行部件EU、总线接口单元BIU,R16位长,DB16根,ALU16位,地址总线AB20根,因此最多支持1M内存 读取M的物理地址长20位,逻辑地址(汇编指令的地址)由段地址(16位的物理地址首地址,分为CS,DS,ES,SS)和偏移地址(16位,可能是立即数,R(BX,SP,BP,SI,DI))组成,cpu会转换逻辑地址为物理地址(段地址左移4位+偏移地址) 4个段地址寄存器,作为当前使用的段: CS(代码段R):存放汇编指令(程序)。不允许被MOV修改 DS(数据段R):存放常规数据或乘数 SS(堆栈段R):一个栈,存放数据 ES(附加段R):字符串指令中用到的数据,很少用到 8个16位通用寄存器,可存放普通数据: 4个16位R:AX(累加器),BX(基址R),CX(移位或循环次数,计数R),DX(数据R,可以和AX(L)合起来作为32位存储器) 8个8位R:AH(高字节,高8位),AL(低字节),BH,BL,CH,CL,DH,DL 地址指针R: IP(即pc,指令指针寄存器),cpu从CS:IP处取指令 标志寄存器FlagsRegister(存储PSW,16位长,) 状态位6个:CF(0)进,借位标志、PF、AF(为1表示)、ZF、SF、OF(11,为1表示前一步溢出) 控制标志位3个: 主存特点:字寻址,高地址在高8位字节,低地址低8位字节 指令 CS:IP 堆栈 SS:SP   SS:BP 数据 DS:偏移 ES:偏移      SI DI BX可以作为数据寄存器 8086支持的寻址方式: 1.寄存器寻址:指令给出寄存器地址 mov AX,BX(BX传给AX) 2.立即(数)寻址:只支持8/16位,只能出现在原操作数中,不能出现在目的操作数中 3.直接寻址: 如mov AX,VAR或 mov AX,VAR       MOV AX,DS:1200H或省去DS(默认) 4.R间接寻址 mov AX,BX    SI,DI之一 4.变址寻址:只给出位移量 5.基址变址寻址:基址寄存器(BX-r默认ds或BP-r隐含ss) 变址寄存器(SI或DI) 偏移量  相加 6.与转移地址相关的寻址方式:段内直接寻址 VAR是间接寻址,200H是直接寻址 五、8086指令类型 1.数据传输指令:两个操作数长度一致,2地址不能都是 2.算术运算指令3.逻辑运算指令4.程序控制 指令系统:指令的格式、功能、限制 关于mov指令,不能向cs传递,段寄存器不能互相存储 字变量16位 字节8位 六、8086/8088指令 MOV XCHG(exchange):不能使用段R、立即数 PUSH、POP:只能是宽度16位的R或内存单元 (用的不多)XLAT:查表,BX指向表格首地址,AL决定第n项 标志寄存器操作LAHF,将标志R低八位传送到AH;SAHF相反 地址传送指令 LEA(LoadedEffectiveAddress) DST,SRC,将源OP在数据段中的偏移地址传送给DST 例:lea si,buf。Mov bx,si (用的不多)LDS/LES DST(16位通用寄存器),SRC(内存单元):2字节偏移地址DST,2字节段地址DS/ES 算术运算指令 ADD DST,SRC;不能同时是内存单元,宽度一致,2寄存器、寄存器+内存单元、寄存器+立即数 ADC 带进位加法 INC DST;操作数+1,DST只能是通用寄存器和内存单元 减法SUB DST,SRC; DST-SRC➡️DST SBB带借位减法,用于扩展减法 DEC DST;和INC相反 NEG求负数(求补) 比较指令 CMP DST,SRC; DST-SRC并设置标志位,DST和SRC内容不受影响 乘法指令 无符号数乘法MUL SRC(不能立即数,可以内存单元或R);另一操作数载AL或AX中,8位时取AL,结果保存在AX;16位时与AX相乘,高16位DX,低16位AX 带符号数乘法指令IMUL 无符号数除法DIV SRC;和乘法相似,字节除法:AX/SRC➡️AL,余数➡️AH;字除法:(DX:AX)/(SRC)➡️AX,余数➡️DX IDIV 类型转换指令 指令格式:CBW/CWD(符号位扩展);隐含使用AH/DX;CBW:AL向AH扩展(用符号位填充)CWD:用AX符号位向DX扩展 逻辑运算指令 AND/OR/XOR DST,SRC;要求宽度一致,DST不能是立即数,两个不能同时是内存单元 NOT DST; 异或 XOR AX,AX 清零 测试指令:TEST DST,SRC;按位与,设置标志位但不传结果给DST COMPARE比较大小和正负, 移位指令:算术左移/右移 SAL/SAR DST,COUNT(最高位到CF,最低位补0;最低位到CF,最高位补符号位) 逻辑移位:SHL/SHR DST,COUNT 最高位也补0 循环移位:ROL/ROR DST,COUNT 带进位循环左移/右移:RCL/RCR DST,COUNT,带上CF,循环移位 COUNT=1时可用1,COUNT!=1时用CL替代 传送类指令一般不影响标志位,算术和逻辑运算一般设置标志位 无条件转移指令:JMP 目标地址; 条件转移指令:JXXX 目标地址; JCXZ 目标地址,测试CX地址,CX=0,跳转 循环控制指令LOOP 目标地址;CX-1,CX不为0则循环,CX为0则顺序执行 子程序调用与返回 CALL 目标地址 影响堆栈 RETPARA 影响堆栈 中断调用与返回 INT n(调用n号中断功能) IRET 在中断服务程序的最后,无参数,从堆栈弹出原有地址 NOP延时 HLT停机 WAIT等待 七、CISC与RISC Complex Instruction Set Computer 执行一条指令要多次访问主存,需多个微周期,寻址方式复杂,流水线中长指令执行妨碍其他指令 Reduced Instruction Set Computer ARM、DSP、RAMIP、MSP、AVR 第八章 汇编:不区分大小写,注释加;,一个程序由若干个段组成 DATA SEGMENT A DB 25;DB型即8位字节变量 Y DB ?; DATA ENDS COSEG SEGMENT 伪指令             ASSUME CS:COSEG,DS:DATA,SS:STACK1 伪指令,把DS指向数据段首地址 START:(程序入口地址)          MOV Y,A; COSEG ENDS 汇编语句种类 指令语句:cpu执行二进制代码 位指令语句/命令语句:汇编程序的指示 宏指令语句:用户自定义的指令 ?宏和子程序 格式:名字+操作符+操作数+;+注释 指令:标号:助记符操作数[,操作数] 伪指令:名字定义符参数,… 命名规则:可以用?@_$数字和英文,第一个字符不能时数字,前31字符有效,不允许用保留字(指令、伪指令、寄存器) 伪指令: EQU:符号 equ 表达式,如const equ 10 后面不能再重新定义 =:cont=5 后面可以改变 变量名 db/dw/dd 表达式1,2。。 用于分配空间 db 1byte; dw word 2; dd dword 4;dq  qword 8;dt 10byte 前面的字节在高位,一般放在数据段或附加段,不能放代码段;变量拥有段属性(属于哪个段),偏移属性,类型属性 字符/字符串 一般用db声明 变量名 db 表达式1,2 用单引号括起来 ?表达式:代表只分配空间 dup表达式:表示把括号内的内容重复n次 如:da_b1 db 10h dup(?)重复16次 常量:数值型二进制后b,八进制o,十进制d或不加,十六进制h 汇编语言不区分大小写  字符串常量:单引号括起来 常量可以作为立即数,位移量,初始值 变量:直接寻址:data_var +08h  标号: 在操作语句前 ,代表指令在代码段内的偏移地址,分为near: far:,默认近标号,如next:可以用label伪指令设置:sub1_far label far / sub1: mov ax,1234h  与数据定义配合使用:data_byte label byte / data_word dw 20h dup(563h) 运算符: ?地址是以字节为单元吗 数值返回运算符 <地址表达式>:seg返回段值 offset返回变量所在偏移 type返回类型 length元素个数 size所占字节数 size=l*s Org 30h:预留30字节空白区域 Lea bx,var = mov bx,offset var Length 如果变量用dup定义,返回外层dup,没有dup无论如何返回1 属性运算符:类型 ptr 地址表达式 Label ptr this都是给变量或标号另外的属性 段结构伪指令 Start: mov ax,data-dis Mov dis,ax Mov ax ,data-es Mov es,ax Ss装入 stack1 segment para stack Dw 20h dup(?) Stack1 ends 过程定义 过程名 procnear/far Org 将表达式的值给位置计数器(汇编编译器的,用$表示,指令或分配空间都会增加)(每段开始清零,记录下一条数据或指令位置) 有条件跳转只能短跳(+-128字节),无条件可以长跳转 大小 正负 是否为0 cmp。判断某些位0/1做与运算用test 无符号数用JA JB JZ JE比较,有符号数JG JL mov后面可以跟ascii码,也可以用单引号括字符 循环程序设计 1.初始化:设置地址指针、计数器初值 。。。 用计数控制循环: Mov cx,次数 标号:循环体 Loop 标号;loop会自动将cx-1,直到cx=0 Mov count,次数/0 标号:循环体 Dec count/inc count Jnz 标号;jnz:jum not zero/cmp count,次数 jnz 标号 条件控制循环: 初始化 标号l1:循环体 Cmp/test 退出条件 Jxx l1 嵌套循环: Mov cx,外循环次数 L1:。。。。 Mov temp,cx/push cx Mov cx,内次数 内循环 Loop l2 Mov cx,temp/pop cx Loop l1 子程序设计 过程名 proc 类型:near/far 语句 一般不定义变量 过程名 endp 过程调用: Call 过程名 过程返回: Ret 返回地址从zhan中弹出到ip(cs)中 返回调用点 段内:ret 段间:ret n;同时弹出n个字节的数据 保护信息: 不建议在主程序实现 子程序中实现(用堆栈): Sub_proc1 proc Push bx … Pop bx Rest Sub_proc1 endp 参数传递: 通用寄存器R传递(适合参数较少的情况): 用公共变量传递: 用堆栈传递(高级语言编译器选用的方式): DOS要求:1,2,9,0A号系统功能 1.MOV AH,1 INT 21H 5.LEA DX,字符串;要求以$结尾,不显示$ MOV AH,9 INT 21H 6.LEA DX,字符串缓冲区首地址 MOV AH,0AH INT 21H 调试:设置断点、单步运行、运行到断点 第一章:1.1不用看 1.2.1和1.4 主机:cpu和主存 cpu:控制器和运算器 cpu的性能:cpu的字长、频率 总线的交换速度与宽带:外频粗略决定CPU与主存的数据交换频率 缓存对计算机系统性能的影响也很大 指令系统 第二章:要求掌握,重点浮点数,iee754 符号位S+阶码E(整数)+尾数M(1/2<=小数<1) Iee754: 1数符+8阶码+23尾数 阶码的范围是1~254,实际表示-126-127 尾数隐含最高位=1,表示1.M 第三章:3.1.3不用看 3.1.2不用看 重点补码加减、溢出判断、位运算、浮点运算(加减乘除)、整数乘除 3.1.1 全加器通过两个操作数和一个低位传来的进位得到结果和进位 补码加法、减法,减法变负数补码,负数变补码:符号位不变,从右往左第一个1与以前的0不变,以后的高位取反 溢出 1.用符号位判断 2.用最高位和符号位的进位判断(如果最高有效位进位,符号位不进位,正溢) 3.变形补码(拓展符号位,第一位表示正负,第二位不同则溢出) 位运算 1.算数移位,不带符号位,正数都补0,负数原码补0,补码左移补0,右移补1,反码都补1 2.逻辑移位 全补0 3.循环移位 浮点运算 整数乘除 第四章:4.2.5 4.3.4 4.4.4不用看 重点掌握寻址方式 可变址操作码的扩展 地址格式分类、含义 cisc、risc特点 如何缩短指令字长度 可变长操作码:比如OP在最后四位之前都是1111 Complex instruction set computer:指令系统庞大,有多种字长和寻址方式 Reduced instruction set computer:较少的指令、寻址方式,字长固定,只有读数取数访问主存,简化硬件结构,减少指令执行的周期数 地址格式:各种地址的指令/访问主存或寄存器 寻址方式:隐含寻址、立即寻址、寄存器寻址、内存:直接寻址(直接访问内存)、间接寻址(从内存地址跳转)、寄存器间接寻址(寄存器存储内存地址)、变址寻址(寄存器存储地址与指令地址相加)、基址寻址、相对寻址(PC计数器+位移量)、堆栈寻址 第五章:不用看 第六章:6.2.6不看 6.4 6.5看第一小节 6.6不用看 重点6.1、6.2,各种存储器特征,刷新,扩展,会画扩展图,算根数 6.3大概知道 6.4 6.5知道cache概念 随机存取存储器 RandomAccessMemory 只读存储器 ReadOnlyMemory 顺序存取存储器 SequentialAccessMemory 直接存取存储器 DirectAccessMemory 刷新:集中刷新(刷新周期最后一些周期)、分散刷新(每次读取)、异步刷新(在刷新周期内把刷新平摊到一小段时间一次,刷新周期/行数) 扩展:位扩展,地址线连一起,cs、we连一起,d7-d0数据线独立;字扩展:地址(高位A12-A0)、数据、WE并联,高位A14、A15经过译码器产生4个CS信号 第七章:7.5以后不用看 7.1-7.4 cpu与外设的通讯方式 及过程 中断的概念及处理过程、优先级、嵌套、中断向量表、DMA和中断的比较 程序直接控制、程序中断、直接存储器存取(DMA交换文件) 主机响应外设请求暂时中断正在执行的程序,处理完外部事件后再返回原断点的过程称为中断 请求、判优、响应、处理、返回 从中断向量表取出中断程序入口,向量表存在000-3FFF DMA不占CPU资源,每个机器周期都可以响应,优先级高于中断,DMA不能处理异常 第八章以后:汇编

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年1月5日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据信息表示
  • 数值运算及运算器
  • 存储系统
  • 8086寄存器与寻址方式
  • 汇编
  • 更多章节
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档