1、计算机组成原理与汇编语言 (汇编语言部分),北航计算机学院 熊桂喜 Tel :82317605 email:,课程的总体安排教学内容,从指令级理解和实践计算机的基本组成和设计1. 基本组成: 以Intel 80x86为CPU的PC机2. CPU:Intel 80863. 存储系统:PC 内存的组织、寻址4. 指令系统设计:Intel 8086的指令系统5. I/O:PC机的I/O部分 汇编级的程序设计1. 指令、伪指令、汇编程序的基本结构2. 围绕CPU,内存系统间的基本编程技术:算术运算、逻辑运算代码转换、串处理3. I/O程序设计:I/O直接编程, 基本输入输出,中断程序设计文件系统的底层
2、编程,课程的总体安排教材、实验环节,教材及参考书 教材:IBM PC汇编语言程序设计(一、二版均可),清华大学出版社沈美明编著 参考书:1.IBM PC汇编语言程序设计,科学出版社,熊桂喜 编著 2.Intel微处理器全系列:结构、编程与接口,电子工业出版社,金惠华 等译 上机作业 在TASM或MASM下编程、调试的基本技术 基本程序设计 + I/O程序设计编程:6-8道上机题 1-2道综合设计题(Project 作业) 考核考试 笔试:与组织机构部分统一进行,闭卷考试 考核:上机作业,第一部分:基础知识,数制、代码与计算机输入/输出的基本过程 二进制、十进制、十六进制数在计算机中的作用 数值
3、、代码在计算机中的作用 ASCII码和GB汉字编码 IBM-PC计算机组织 PC机的基本组成 Intel 8086 CPU 存储器的操作:寻址和堆栈操作,一、数制、代码与计算机输入输出的基本过程,数制:二进制(十六进制)、十进制 二进制数(值)是计算机进行处理、运算的数制,是和处理器、存储器密切相关的 十六进制是人看待机器中二进制数的数制,是系统软件常见的数制 十进制是人进行计算的数制,计算机一般不能直接进行十进制的运算 计算机中的“值”一般都是值二进制,或者说是十六进制的因此,数值:255D,0FFH,11111111B,在计算机中都是二进制的,也不需要进行转换,只有在进行输入/输出,与人打
4、交道时,才需要进行转换 数(值)与代码: 计算机中处理或运算时,需由“值”与“值”进行运算(二进制运算) 计算机从“人”那里输入(如从键盘)时,一般采用十进制,而且输入的是代码 计算机为“人”输出(如在显示器上显示运算结果)时,一般采用十进制,输出的是代码输入 运算(处理) 输出ASCII码 二进制值 ASCII码(十进制) (16位) (十进制),转换,转换,典型的 输入输出 过程,计算机输入输出的基本过程(数值与代码的转换),例:在16位计算机上进行1212=121的过程 (1) 输入:1 2 31h,32h (2) ASCII码转换为值 0001h, 0002h (3) 十进制至二进制
5、000Ch (5) 输入:1 2 31h,32h (6) ASCII码转换为值 0001h, 0002h (7) 十进制至二进制 000Ch (8) 做乘法: 000Ch 000Ch 0079h(121D) (9) 输出(二 十的ASCII) 121(31h,32h,31h),ASCII码和汉字的GB编码,ASCII码: 8位(高位为0)的字符、数字编码,占一个字节美国信息交换标准码AZ 41h 5Ah 09 31h 39haz 61h 7Ah 空格20h 0 00h换行0Ah 回车 0Dh 换页 0Ch 文件尾 1AhDOS(Windows)文本换行0dh,0ah; Unix文本换行0ah
6、汉字GB码:双字节双高位为1的汉字标点、符号和汉字的国标(GB2312-80)编码。分区、位分别编码,共9个汉字符号区(01-09),72个汉字区(16-97)。每个区内有94个字,共6763(6768,40区空了5个),也称“区位码”。、 A1A2h 啊 B0A1h ;字符区从A1开始,汉字区 从B0开始,区内位编码从A1开始,其他编码(可选项),BCD码,压缩的BCD码 Unicode: 对全部语种的双字节编码 BIG 5码:我国台湾省的汉字编码(13000多字) 国标汉字大字符集的编码 ASCII码与Unicode的转换 GB与BIG5的转换,二、IBM-PC计算机组织,2.1 PC机的
7、基本结构PC三大部分: 中央处理器(CPU)、存储器、输入/输出(I/O)子系统一般计算机的五大部分: 运算器、存储器、控制器、输入设备、输出设备,CPU,总线控制 逻辑,存储器,接口,接口,I/O设备,I/O设备,CPU: 16位的8086,32位的80386等,由运算器和控制器组成 存储器:包括RAM, ROM等,寻址能力由地址总线确定 控制器及总线控制逻辑:控制、取指、译码、取数、执行、存数等 I/O子系统:由大容量外存、一般I/O设备组成(一般通过接口卡连接);,2.2 中央处理机(以8086为主),8086 CPU的三部分:ALU, 控制逻辑,寄存器组,通用寄存器 AX,BX,CX,
8、DX SP,BP,SI,DI,段寄存器 CS,DS,ES,SS,指令指针IP,控制逻辑 及指令处理逻辑,标志寄存器PSW,ALU,8086CPU的基本组成部分,字长(ALU, 寄存器) : 16位 地址:20位(寻址能力为1 MB) 数据总线:16位(8086), 8位(8088) 最早的PC以8088为主,8086/8088更进一步的结构,Intel 8086的寄存器,AX,BX,CX,DX16位,可分为两个8位: AH, AL; BH,BL;CH,CL; DH,DL SP16位堆栈指针 BP16位参数指针(基址指针) SI,DI字符串指针,SI指向源串,DI指向目的串 CS代码段寄存器 D
9、S数据段寄存器 SS代码段寄存器 ES附加段寄存器 IP 指令指针(指令计数器) PSW标志寄存器,SS:SP组成当前堆栈 CS:IP组成当前可执行点,PSW: CF进位标志 SF 符号标志 ZF结果为零标志DF地址递增/减方向标志ZF=1,运算结果为0;ZF=0,运算结果不为0,标志寄存器:综合了解,OF 溢出标志 DF 方向标志 SF 符号标志 IF 中断标志 ZF 零标志 TF 陷阱标志 CF 进位标志 PF 奇偶标志 AF 辅助进位标志,15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0,OF DF IF TF SF ZF,AF PF CF,在Debug下的含义
10、:CY NC; PE OP;AC NC; ZR NZNG PL; EI DI; DN UP; OV NV,2.3 存储器(8086可寻址的1MB 内存为主),20根地址线决定了寻址能力为1 MB 内存中基本单元为1个字节(8位),线性顺 序存放;两个字节组合为1个字(16位);两个字组合为一个双字(32位);在内存中可任意组合存放字节、字、双字。在内存中存放1个字时,低字节在前,高字节在后;存放双字时,低字在前,高字在后。,内存图,0,1MB,存储单元,地址,00000h,00001h,FFFFFh,位 7 6 5 4 3 2 1 0,字节,内存中字节、字、双字的存取,例题:CL中有字节A,B
11、X中有字2000h,DX:AX中有双字12345678h。(1) 依次将CL,BX,DX:AX中的内容按照字节、字、双字的结构放入内存30000h处,内存图,0,1MB,存储单元,地址,00000h,30000h30001h30002h30003h30004h30005h30006h30007h,FFFFFh,41h 00h 20h 78h 56h 34h 12h,(2) 将内存30000处的一个字取出送入BX中,将30002处的一个双字送入DX:AX中;则 BX=0041h,BH=00h,BL=41hAX=7820h,AH=78h,AL=20hDX=3456h,DH=34h,DL=56h新的
12、字为4100h新的双字为34567820h,逻辑地址和物理地址,用16位地址寄存器(指针)来表示地址时,最多可寻址64 KB。要表示20位地址,需要对内存进行分段,然后用一个寄存器(段寄存器)表示段地址,用另一个寄存器(指针寄存器)表示段内地址(偏移值)。 可将1MB内存分段,每段最大64KB。 物理地址用20位二进制表示,且与内存单元一一对应的地址 逻辑地址用段地址和偏移值组合来表示的内存地址。常写成“段地址:偏移值”的形式。 段地址16D(10h) + 偏移地址 = 物理地址一个物理地址可能有多个逻辑地址的组合。 典型的程序在内存中执行时,一般都有代码段、数据段、堆栈段,其段地址分别用CS
13、,DS,SS来存放(指向)。,19 0,物理 地址,16 4 3 0,偏移 地址,16 0,段地址,物理地址 12345h,1000h:2345h 1001h:2335h 1002h:2325h 1234h:0001h,逻辑地址组合,2.4 堆栈的组成和操作,堆栈是内存中由SS和SP确定的一块特殊的内存区域。它严格按照“先进后出”的方式工作。例如:SS=2000h,SP=0100h则堆栈区域为:2000h:0000h至2000h:00FFh栈顶指针值为0100h压栈操作: 出栈操作:PUSH OP(操作数) POP OP(操作数)则(1) SP=SP-2 则:(1) OP SS:SP(2) OP SS:SP (2) SP=SP+2,20000h200FFh,SS 2000h,SP 0100h,2000h:0000h 2000h:00FFh,压 栈 方 向,栈顶,