1、1把寻找操作数的方式叫做(操作数)寻址方式立即数寻址方式寄存器寻址方式存储器寻址方式1、直接寻址方式 2、寄存器间接寻址方式3、寄存器相对寻址方式 4、基址变址寻址方式 5、相对基址变址寻址方式微处理器的定义微处理器即中央处理单元,采用大规模集成电路技术制成的半导体芯片,内部集成了计算机的主要部件:控制器、运算器、寄存器组。微处理器通过执行指令序列完成指定的操作,处理器能够执行全部指令的集合就是该处理器的指令系统。微机的总线结构的好处,使用特点。包括总线定义,分类。总线定义:指传递信息的一组公用导线,总线结构的好处:总线结构使得微机系统组态灵活,扩展方便。使用特点:在某个时刻只有一个总线主控设
2、备控制系统总线。某一时刻只能有一个设备向总线发送信号,但可以有多个设备同时从总线上获取信号。总线按传输信号可以分为数据总线(用于 CPU与其他部件之间传递信息,具有三态功能,且是双向的)、地址总线(用于传递 CPU要访问的存储单元或 I/O接口的地址信号)、控制总线(连接 CPU的控制部件和内存、I/O 设备等,用来控制内存和 I/O设备的全部工作)冯诺依曼存储程序工作原理1、将采取二进制形式表示数据和指令。指令由操作码和地址码组成2、将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完成计算任务。3、指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由
3、转移指令实现。4、计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了各部件的基本功能。8086微处理器的构成、每一个 T状态的主要工作。基本的存储读、写总线周期构成。常用的控制信号。总线周期是指 CPU通过总线与外部(存储器或 I/O端口)进行一次数据交换的过程,即完成一次总线操作的时间指令周期是指一条指令经取指、译码、操作数读写直到指令完成所需要的时间。存储器读总线周期:T1 状态输出存储器的地址T2状态输出控制信号-RD,选通存储器;DEN 信号,选通数据收发器T3和 Tw状态检测数据传送是否能够完成T4状态前沿读取数据,完成数据传送存储器写总线周期:T1 状态输
4、出 20位存储器地址 A19 A0 T2状态 -WR 信号有效,-DEN 信号有效以输出数据 D7D02T3和 Tw状态 -WR、-DEN 等控制信号持续有效,T3 时钟下降沿检测 READY信号,决定是否插入 Tw;Tw 期间,各信号延续状态。T4状态完成数据传送,并准备过渡到下一操作。-WR、-DEN 转为无效。常用的控制信号:ALE地址锁存允许,输出、三态、高电平有效IO/-M:I/O 或存储器访问,输出、三态-WR:写控制,输出、三态、低电平有效-RD:读控制,输出、三态、低电平有效INTR、-INTA 等存储器地址的译码问题全译码:所有的系统地址线均参与对存储单元的译码寻址特点:采用
5、全译码,每个存储单元的地址都是唯一的,不存在地址重复译码电路可能比较复杂、连线也较多部分译码:只有部分(高位)地址线参与对存储芯片的译码特点:每个存储单元将对应多个地址(地址重复),需要选取一个可用地址可简化译码电路的设计、但系统的部分地址空间将被浪费存储芯片为什么要设置片选信号?它与系统地址总线有哪些连接方式?采用何种连接方式可避免地址重复?采用哪些连接方式可节省用于译码的硬件?解答:片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间存储器片选信号通常与 CPU地址总线的高位地址线相关联,可以采用“全译码”、“部分译码”、“线选译码”方式采
6、用全译码方式可以避免地址重复采用部分或线选译码可以节省译码硬件8086微处理器的内部结构,EU、BIU 的定义和作用,流水线。BIU(总线接口单元):由指令队列、指令指针、段寄存器、地址加法器和总线控制逻辑构成。该单元管理着 8088与系统总线的接口、负责 CPU对存储器和外设进行访问。EU(执行单元):由 ALU、通用寄存器、标志寄存器和指令译码逻辑等构成,它负责指令的译码、执行和数据的运算。两个单元相互独立,分别完成各自操作。两个单元可以并行执行,实现指令取指和执行的流水线操作38086的寻址方式。物理地址和逻辑地址的定义。两者之间转换。8086 系统存储器采用分段管理方式。(要求很熟练)
7、对于每个存储器单元都有一个唯一的 20位地址,称为物理地址。在 8088的总线内部和用户编程时,所采用的“段地址:偏移地址”形式,称为逻辑地址。一个存储器单元可以拥有多个逻辑地址,但可能拥有唯一的物理地址。转换过程:先将段寄存器提供的 16位段地址左移四位,低位补 0,恢复为 20位地址,然后与由各种寻址方式提供的 16位偏移地址相加,即得到 20位的物理地址。8086微处理器的内部构成。8086 的寄存器结构,标志寄存器中每一个标志位的含义及应用。8086复位时各寄存器的初始状态。内部构成:算术逻辑单元(运算器)、寄存器组、指令处理单元(控制器)寄存器结构:8086/8088 共有 8个的通
8、用寄存器,1 个标志寄存器,4 个段寄存器和 1个指令指针寄存器。进位标志 CF:计算结果的最高有效位有进位,则 CF=1,否则 CF=0溢出标志 OF:若算术运算的结果有溢出,则 OF=1;否则 OF0全零标志位 ZF:若运算结果为全 0,则 ZF=1,否则 ZF=0符号标志 CF:运算结果最高位为 1,则 SF=1;否则 SF=0奇偶标志位 PF:当运算结果最低字节中 1的个数为零或偶数时,PF=1;否则 PF=0(奇校验)辅助进位标志 AF:运算时 D3位(低半字节)有进位或借位时,AF=1;否则 AF=0方向标志 DF:存储地址自动增加,DF=1,否则 DF=0中断允许标志: IF1,
9、则允许中断,IF0,则禁止中断陷阱标志 TF: TF0,处理器正常工作;TF1,处理器每执行一条指令就中断一次中断向量表。掌握中断向量表的构成,计算中断类型号,中断服务程序入口地址。中断的工作过程。中断向量表是一种表数据结构,是中断向量号与其对应的中断服务程序入口之间的链接表。该地址包括:偏移地址 IP 、段地址 CS (共 32位)每个中断向量的低字是偏移地址、高字是段地址,需占用 4个字节(低对低,高对高)。8088 微处理器从物理地址 000H开始到 3FFH(1KB),依次安排各个中断向量,向量号从0到 255。256 个中断向量所占用的 1KB区域,称中断向量表中断向量的存放首址=N
10、*4中断类型:8088 CPU具有哪些中断类型?各种中断如何产生,如何得到中断向量号?除法错中断:在执行除法指令时,除数为 0或商超过了寄存器所能表达的范围产生指令中断:在执行中断指令 INT n时产生溢出中断:在执行溢出中断指令 INTO时,溢出标志 OF为 1产生单步中断:单步标志 TF为 1,在每条指令执行结束后产生非屏蔽中断:外部通过 NMI请求信号向微处理器提出请求时产生可屏蔽中断:外部通过 INTR请求信号向微处理器提出请求,并在允许可屏蔽中断的条件下产生(2)除法错中断、溢出中断、单步中断、非屏蔽中断的向量号是 8086微处理器内部已经4确定指令中断的操作数 n就是向量号可屏蔽中
11、断的向量号在响应中断时通过数据总线从外部获得什么是 8259A的中断结束字(EOI)?(1)IRi 被响应时,ISR 中对应的 Di位被置 1;(2)中断处理完毕,相应的 Di位应置 0。(3)向 8259A送中断结束指令,使 ISR的某位清 0,指令的内容叫作中断结束字。8259A中 IRR、IMR 和 ISR三个寄存器的含义中断请求寄存器 IRR:保存 8条外界中断请求信号 IR0IR7 的请求状态Di位为 1表示 IRi引脚有中断请求;为 0表示无请求中断屏蔽寄存器 IMR:保存对中断请求信号 IRi的屏蔽状态Di位为 1表示 IRi中断被屏蔽(禁止);为 0表示允许中断服务寄存器 IS
12、R:保存正在被 8259A处理的中断的状态Di位为 1表示 IRi中断正在处理中;为 0表示没有被处理中断的概念。 中断向量表的含义。深入理解 8259的工作方式,优先权设置、中断结束处理、中断源屏蔽、中断触发等等。8259 的初始化编程。中断服务程序编写。中断:指当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。优先权设置:在 ISR的 Di 位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套中断结束处理:自动中断结束方式、普通中断结束方式、特殊中断结束方式;中断向量表的含义:256 个中断向量所占用的 1KB区域,称中断向量表计算机主机和
13、 I/O设备之间进行数据传送的方法。重点掌握查询方式完成数据传送的流程,要会编程。查询传送的特点是:工作可靠,适用面宽,但传送效率低查询输入接口(考电路):代码如下:mov dx,8000h ;dx指向状态端口Status: in al, dx ;读状态端口test al,01h ;测试标志位 D05jz status ;D0=0,未就绪,继续查询inc dx ;D0=1,就绪,DX 指向数据端口in al,dx ;从数据端口输入数据中断传送:中断传送是一种效率更高的程序传送方式;中断过程的完成由中断系统(硬件,如 8259和 CPU)和中断服务程序(软件)共同控制完成中断工作过程:1、中断请
14、求(外设) 2、中断响应(CPU)3、关中断(CPU) 4、断点保护(CPU)5、中断识别(软件/硬件) 6、现场保护(用户)7、中断服务(用户) 8、恢复现场(用户)9、开中断(用户/CPU) 10、中断返回(IRET/用户)最小组态的写总线周期时序:如何限制只能输入小写字母( 61h7Ah, 课本 P22),否则要求重新输入。.datamsg db not a lowercase,input again, db 0dh, 0ah, $input: mov ah,1 ;输入小写字母int 21hcmp al, 61hjl once-againcmp al, 7Ahja once-againj
15、mp convertonce-again: mov dx,offset msgmov ah,9int 21hjmp input6convert: sub al,20h ;转换为大写字母采用查表法,实现一位 16进制数转换为 ASCII码显示04h34h(4) 0bh42h(B)ASCII db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h;对应 0 9的 ASCII码db 41h,42h,43h,44h,45h,46h;对应 A F的 ASCII码hex db 04h,0bh;假设两个 16进制数;代码段mov bx,offset ASCII;BX 指向 AS
16、CII码表mov al, hex;AL 取得一位 16进制数;恰好就是 ASCII码表中的位移and al, 0fh;只有低 4位是有效的,高 4位清 0xlat ;换码:ALDS:BXALmov dl,al ;欲显示的 ASCII码送 DLmov ah,2 ;2 号 DOS功能调用int 21h ;显示一个 ASCII码字符mov al,hex+1 ;转换并显示下一个数据and al,0fhxlatmov dl,almov ah,2int 21h编写一个源程序,在键盘上按一个键,将从 AL返回的 ASCII码值显示出来,如果按下 ESC键则程序退出。(可调用书中的 HTOASC子程序)HTO
17、ASC procand al,0fh ;al 低四位保存待转 ;换的 16进制数cmp al,9jbe htoasc1add al,37h ;是 A F,加 37Hret ;子程序返回htoasc1: add al,30h ;0 9,加 30Hret ;子程序返回HTOASC endppush axmov cl, 4ror al, clcall HTOASCcall disp_a_char7pop axcall HTOASCcall disp_a_char把从键盘输入的一个小写字母用大写字母显示出来(大小写字母转换)。mov ah,1 ;输入小写字母int 21hsub al,20h ;转换为
18、大写字母mov dl,almov ah,2int 21h ;显示写一个子程序,根据入口参数 AL0、1、2,依次实现对大写字母转换成小写、小写转换成大写或大小写字母互换。欲转换的字符串在 string中,用 0表示结束。 lucase procpush bxmov bx,offset stringcmp al,0je case0 cmp al,1 jz case1 cmp al,2 jz case2 jmp donecase0: cmp byte ptr bx,0 je donecmp byte ptr bx,A jb next0cmp byte ptr bx,Z ja next0add by
19、te ptr bx,20hnext0: inc bxjmp case0case1: cmp byte ptr bx,0je donecmp byte ptr bx,ajb next1cmp byte ptr bx,zja next1sub byte ptr bx,20hnext1: inc bxjmp case1case2: cmp byte ptr bx,0 je donecmp byte ptr bx,A jb next2cmp byte ptr bx,Z ja next20add byte ptr bx,20hjmp next2next20: cmp byte ptr bx,ajb ne
20、xt2cmp byte ptr bx,zja next2sub byte ptr bx,20hnext2: inc bxjmp case28done: pop bxretlucase endp循环累加(调用子程序)array db 12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90hcount equ $-array ;数组元素个数result db ? ;校验和;代码段(主程序)mov bx,offset array ;BX数组的偏移地址mov cx,count ;CX数组的元素个数call checksum ;调用求和过程mov result,al ;处理出口
21、参数checksum procxor al,al ;累加器清 0sum: add al,bx ;求和inc bx ;指向下一个字节loop sum RetChecksum endp计算 AX中有符号数的绝对值cmp ax,0jge nonneg ;条件满足(AX0),转移neg ax ;条件不满足,求补(即绝对值 P43)nonneg: mov result,ax ;保存结果;不恰当的分支cmp ax,0jl yesneg ;条件满足(AX0),转移jmp nonnegyesneg: neg ax ;条件满足,求补nonneg: mov result,ax ;保存结果设置两个变量 maxay和
22、 minay存放最大和最小值array dw 10dw -3,0,20,900,587,-632,777,234,-34,-56maxay dw ? ;存放最大值minay dw ? ;存放最小值lea si,arraymov cx,si ;取得元素个数dec cx ;减 1后是循环次数add si,2 mov ax,si mov bx,axmaxck: add si,2cmp si,ax ;与下一个数据比较jle minckmov ax,si ;AX 取得更大的数据jmp nextminck: cmp si,bxjge nextmov bx,si ;BX 取得更小的数据9next: loop
23、 maxck ;计数循环mov maxay,ax ;保存最大值mov minay,bx ;保存最小值挑出数组中正数(不含 0)和负数,分别形成正、负数组DATAS SEGMENTcount equ 10 array dw 23h,9801h ayplus dw count dup(0) ayminus dw count dup(0)DATAS ENDSSTACKS SEGMENT STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXmov si,offset arraymov
24、di,offset ayplusmov bx,offset ayminusmov ax,dsmov es,axmov cx,countcldagain: lodswcmp ax,0jl minusjz nextminus: xchg bx,distoswxchg bx,dinext: loop againMOV AH,4CHINT 21HCODES ENDSEND START8259A 的初始化程序段(7.8) , ;写入 ICW1:设定边沿触发方式,单片方式 , , : , ;写入 ICW2:设定 IR0的中断向量号为 90h , , 10: , ;写入 ICW4:设定普通嵌套方式,普通中断
25、方式 , ,8259的初始化编程:主片:mov al,11h ;写入 ICW1out 20h,alintr1: mov al,08h ;写入 ICW2out 21h,alintr2: mov al,04h ;写入 ICW3out 21h,alintr3: mov al,05h ;写入 ICW4out 21h,al从片: mov al,11h ;写入 ICW1out 0a0h,alintr5: mov al,70h ;写入 ICW2out 0a1h,alintr6: mov al,02h ;写入 ICW3out 0a1h,alintr7: mov al, 01h ;写入 ICW4out 0a1h
26、,al试按如下要求分别编写 8253的初始化程序,已知 8253的计数器 02 和控制字 I/O地址依次为 204H207H。 使计数器 2工作在方式 2,计数值为 02F0H。 mov al,0b4hmov dx,207hout dx,almov ax,02f0hmov dx,206hout dx,al ;先写入低字节mov al,ahout dx,al ;后写入高字节8255的初始化编程要求:A 口:方式 1输入、CH 口:输出、CL 口:输入、B 口:方式 0输出方式控制字:1 0110 001 B 或 B1H初始化的程序段:mov dx,0fffeh ;假设控制端口为 FFFEHmov al,0b1h ;方式控制字out dx,al ;送到控制端口