怎么自学微型计算机原理,微机原理学习心得与各章重点

微型计算机原理与接口技术,这书名看起来好像是讲微机原理与接口技术两部分,其实我觉得叫微机原理与汇编语言更合适,感觉它讲的主要是这两部分知识,第一部分微机原理是讲8086是怎么工作的,第二部分汇编语言讲的是怎样用汇编来控制其完成自己需要完成的任务。

电脑,或者叫计算机,其本质还是用来计算的,只不过计算的数据多了,叫成处理,都无所谓,其可以用来处理数字化的声音和图像,导致多媒体技术的发展,才有了现在的世界,其实其本质还是大量的计算,而程序就是告诉计算机要如何计算或者处理这些数据,所以这门课的目的就是讲怎样通过计算机来实现一些基本的计算任务。

首先考虑这样一道数学题:今要用白铁皮打造一个无盖圆柱铁桶,已知其底面半径为r,高度为h,求需要的铁皮面积S(忽略接缝处)以及该桶可盛的水的体积V(忽略铁皮的厚度)。

由上所述,本题的目的就是通过r与h两个数据计算S和V,电脑是死的,不知道怎么算,所以需要程序猿告诉它该怎么算,即编程的过程。

首先考虑人类做此题的过程:通过思考,我们得到解题步骤为先由2πr得底面周长,再由πr^2算得底面积,底面周长乘以h得侧面积2πrh,S等于底面积与侧面积之和(πr^2+2πrh),底面积乘以h得体积πhr^2。

计算机处理这道问题的时候与人一样,只不过机器远不如人类灵活。首先,必须将所有需要的东西写在电脑的内存中,电脑通过读取内存中存储的信息得知需要做哪些工作。而这部分内存需要分为四段,即DS,SS,CS和ES。DS和ES称为数据段,其中DS中存储源数据,即程序需要处理的数据,本题为r和h;ES为目标数据段,存储处理完的数据,即S和V。CS称为代码段,即程序猿编写的程序。SS为堆栈段,人类做题时似乎不需要这个,但计算机却需要,这就体现出其低级的地方,堆栈段的作用后面说。

有了数据存放的地方,然后需要的就是指针。指针是内存单元的地址,其作用是指示数据存放的位置和程序进行的位置。程序进行的过程中,需要有一个指针指示程序进行到了哪一步;当程序需要取数据时,需要有指针告诉计算机从哪个内存单元取数据,输出数据时也一样。就上面的例子而言,先取r,通过调用两个子程序计算出其面积和周长,再计算表面积与体积。这时堆栈就派上用场了。C艹课中都学过栈LIFO的特点,栈指针始终指向栈顶。当调用子程序时,将指示程序运行到哪步的指针放入堆栈,然后运行子程序。如子程序中还需调用子程序,则再次将指针压入堆栈。当子程序执行完毕时,将堆栈中的数据取出来,上一级程序就可以继续执行。就好比看书的时候看到了不懂的部分,用书签夹一下,去查别的书,查完之后再回到该位置继续看。堆栈的作用就是存储那个看不懂的地方在什么位置。还是就上面的例子,其中一个子程序的功能是根据圆的半径计算其周长,那么在调用该子程序前,先将数据指针指向r,然后调用该子程序,电脑将指示程序运行进度的指针压入堆栈,该子程序先将数据r取出存放在CPU的某位置中,再通过子程序中的2πr公式计算出周长,并输出存放在内存的某位置,子程序运行完成后电脑自动从堆栈中弹出指针,主程序继续进行。主程序也是类似。例如计算体积,将数据指针指向之前计算出的底面积,取出数据放在CPU中,再将指针指向h,取出数据,两数相乘得到体积,再将其保存在内存的某位置。通过这样一步一步地执行处理数据的指令,计算机就能完成一系列计算任务了。

汇编语言是很低级的语言,直接跟电脑硬件打交道。许多C艹几句话就写完的程序用汇编需要写好长。这是其缺点,优点则是效率高,运行速度快。

几个基本概念:

位和字节:小学的时候学过,2是一位数,23是两位数,233是三位数……微机原理中的位指的是二进制的位,例如,8086是16位微处理器,指的是它能处理16位的二进制数据。2333H就是一个写成16进制的16位二进制数。而1个字节指一个8位二进制数,即8bit=1Byte。一个16位二进制数的长度就是2B。1024B=1KB。(书30页)

地址、物理地址、段地址、偏移地址:地址即为每个存储空间的编号。8086处理器有20根地址线,每个存储空间的地址需要用一个5位16进制数表示,即为该存储空间的物理地址。因8086处理器只能处理16位的数据,所以用段地址和偏移地址来表示实际的地址,方法为:段地址左移4位(乘16)后加上偏移地址即为物理地址。例如:段地址为2000H,偏移地址为3333H,则该存储空间的物理地址为23333H(书70~71页)。一个地址所对应的存储空间能存储1个字节的数据。

例:某存储器有12条地址线和8条数据线,求该存储器的容量。

解:因为有8条数据线,所以每个地址能存储1Byte的数据;12条地址线,共有2^12个地址,所以总容量为2^12Byte=4KByte。

第1章:

原码,反码,补码以及之间的转换

正数:原码=反码=补码

负数:反码:最高位不变,其余位取反;补码:反码+1

一个字节的有符号数,从00H到FFH,原码:+0,1,2,…,127,-0,-1,…,-127;反码:+0,1,2,…,127,-127,-126,…,-1,-0;补码:0,1,2,…,127,-128,-127,…,-1。

例:A=32H,B=100,写出A、B、[A-B]的原码,[A-B]的反码,补码。

答:原:A:32H=00110010B;B:100=01100100B,A-B=48-100=-52=10110100B。

反:11001011;补:11001100。

ASCII码:0~9,减30H;A~F,减37H。

第2章:

8086CPU从功能上分为两大部分,即总线接口单元BIU和执行单元EU。

标志寄存器FLAGS:

CF:进位标志位,有进位时为1。

PF:奇偶标志位,运算结果中1的个数为偶数是为1。

ZF:零标志位,结果为0时为1。

SF:负号标志位,结果最高位为1时为1。

OF:溢出标志位,有溢出时为1。

总线周期:一个最基本的读或写周期包含4个T状态,有可能在T3和T4中间插入一个或几个等待状态Tw。

第3章:

寻址时,BP对应的段寄存器为SS,其余都是DS。

重要的指令:

MOV,PUSH,POP,LEA(可用MOV+OFFSET代替),PUSHF,POPF。

算数:ADD,ADC,INC,SUB,SBB,DEC。NEG取补。

MUL,IMUL,乘数在AL或AX中,积在AX或DX+AX中。

DIV,IDIV,被除数在AX或DX+AX中,商在AL或AX中,余数在AH或DX中。

CBW,CWD,扩展。

DAA压缩BCD码调整。

逻辑:AND,不需要的与0,需要的与1。

OR,不变的或0,置1的或1。

XOR,求反的异或1,不变的异或0。

TEST(=AND):测是否是0:0FFH;奇偶:01H;正负:80H。

CMP(=SUB)。

跳转:JMP,JZ/JNZ是否是零,JA/JAE/JBE/JB无符号数,JG/JGE/JLE/JL有符号数。

先看ZF,判断是否相等。无符号数:看CF;有符号数:看SF与OF是否相等。

指令对标志位的影响汇总:INC、DEC:不影响CF;逻辑:将CF、OF置0;NOT:不影响标志位。

移位:SHL/SHR,ROL/ROR循环,RCL/RCR带进位循环。

串操作:MOVS:DS→ES;STOS:ES;LODS:DS。(因为DS是源数据段,ES是目标数据段。)

循环LOOP:CX中为循环次数。

CALL、RET:子程序中用。

第4章:

DOS系统功能调用:

MOV AH,XXH

INT 21H

01H:键盘输入,将ACSII码送入AL中。

02H:屏幕输出,将DL中的ASCII码对应的字符显示在屏幕上。

09H:显示字符串,将DX地址中的字符串显示在屏幕上。

4CH:返回DOS系统。

程序模版:

DATA SEGMENT;定义数据段

……

DATA ENDS

STACK SEGMENT;定义堆栈段

STA DW 100 DUP(?)

TOP EQU LENGTH STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK, ES:DATA

MOV AX, DATA

MOV DS, AX

MOV ES, AX

MOV AX, STACK

MOV SS, AX

MOV SP, TOP

……

CALL XXX;调用子程序

……

MOV AH, 4CH;返回DOS系统

INT 21H

XXX PROC NEAR;子程序

……

RET;返回主程序

XXX ENDP;子程序结束

CODE ENDS;主程序结束

END START

第5章:

看书上的电路图,会根据所给地址补画图中的存储器和接线,会根据图写出每个存储器对应的地址范围,会计算存储器容量。

第6章:

CPU与外设交换的信息与所对应接口的三种类型为:数据,状态,控制。

CPU与外设之间数据传送的三种控制方式:直接,中断,DMA。

中断向量表:256个中断向量,每个占4个字节共1024个单元,位于00000H~03FFFH。

给出中断类型号,乘4即为中断向量的起始地址。(书329页知道0BF6:3A16H怎么来的)

第8章:

8253:

控制字:

选择计数器-读写方式-工作方式-计数选择

例:CNT0工作在方式3:00 11 011 0=36H

CNT1工作在方式0:01 11 000 0=70H

六种工作方式中,有2种是硬件启动,2种初值不能自动重装。

方式0:软件启动,输出一段时间的低电平。(例如按键后灯亮1s后熄灭)

方式1:因其为硬件启动,几乎不会考。

方式2:每个周期中有1个脉冲时间为低电平。

方式3:方波,每个周期中一半高电平一半低电平。

N的计算:N即为输出的周期与输入周期的比值。

程序模版:

假设8253的地址为0230H~0233H,CNT0工作在方式3,N=2333H

MOV DX, 0233H;控制端地址

MOV AL, 36H;CNT0控制字

OUT DX, AL;输出

MOV DX, 0230H;CNT0地址

MOV AX, 2333H;N

OUT DX, AL;先输出低字节

MOV AL, AH;将高字节移动到AL(因OUT只能在AL输出)

OUT DX, AL;再输出高字节

8255:

控制字:一般只考方式0,且A端口输入,B端口输出,所以为1 00 1 0 0 0 0=90H。

C端口:高四位是0,低四位中前3位是要置入的编码,后1位是置1还是置0。

例:要把PC3置1,则控制字为0000 011 1=07H。

检测键盘有按键则返回DOS:

……

MOV AH, 01H

INT 16H;检测按键

JNZ FINISH;有按键则跳

……

FINISH: MOV AH, 4CH;结束,返回DOS

INT 21H

……

  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值