首页 范文大全 古典文学 职场知识 中国文学 公文书信 外国名著 寓言童话 百家讲坛 散文/诗歌 美文欣赏 礼仪知识 民俗风情
  • 工作总结
  • 工作计划
  • 心得体会
  • 竞聘演讲
  • 会议发言
  • 爱国演讲
  • 就职演说
  • 开业开幕
  • 思想学习
  • 征文演讲
  • 经验材料
  • 述职报告
  • 调研报告
  • 工作汇报
  • 年终总结
  • 申报材料
  • 学习体会
  • 企划方案
  • 活动方案
  • 技巧经验
  • 模板范例
  • 思想宣传
  • 经济工作
  • 工作报告
  • 组织人事
  • 反腐倡廉
  • 慰问贺电
  • 先进事迹
  • 思想汇报
  • 入党申请书
  • 党会发言
  • 先进性教育
  • 入团申请书
  • 个人简历
  • 演讲稿
  • 调查报告
  • 实习报告
  • 和谐社会
  • 观后感
  • 读后感
  • 作文范文
  • 自我鉴定
  • 讲话稿
  • 自查报告
  • 微机原理期末考试重点总结

    时间:2021-03-08 18:05:13 来源:蒲公英阅读网 本文已影响 蒲公英阅读网手机站

    相关热词搜索:微机 期末考试 原理

    微机原理期末考试重点总结 本文关键词:微机,期末考试,原理,重点

    微机原理期末考试重点总结 本文简介:把寻找操作数的方式叫做(操作数)寻址方式立即数寻址方式寄存器寻址方式存储器寻址方式1、直接寻址方式2、寄存器间接寻址方式3、寄存器相对寻址方式4、基址变址寻址方式5、相对基址变址寻址方式微处理器的定义微处理器即中央处理单元,采用大规模集成电路技术制成的半导体芯片,内部集成了计算机的主要部件:控制器、

    微机原理期末考试重点总结 本文内容:

    把寻找操作数的方式叫做(操作数)寻址方式

    立即数寻址方式

    寄存器寻址方式

    存储器寻址方式

    1、直接寻址方式

    2、寄存器间接寻址方式

    3、寄存器相对寻址方式

    4、基址变址寻址方式

    5、相对基址变址寻址方式

    微处理器的定义

    微处理器即中央处理单元,采用大规模集成电路技术制成的半导体芯片,内部集成了计算机的主要部件:控制器、运算器、寄存器组。微处理器通过执行指令序列完成指定的操作,处理器能够执行全部指令的集合就是该处理器的指令系统。

    微机的总线结构的好处,使用特点。包括总线定义,分类。

    总线定义:指传递信息的一组公用导线,

    总线结构的好处:总线结构使得微机系统组态灵活,扩展方便。

    使用特点:在某个时刻只有一个总线主控设备控制系统总线。

    某一时刻只能有一个设备向总线发送信号,但可以有多个设备同时从总线上获取信号。

    总线按传输信号可以分为

    数据总线(用于CPU与其他部件之间传递信息,具有三态功能,且是双向的)、

    地址总线(用于传递CPU要访问的存储单元或I/O接口的地址信号)、

    控制总线(连接CPU的控制部件和内存、I/O设备等,用来控制内存和I/O设备的全部工作)

    冯×诺依曼存储程序工作原理

    1、

    将采取二进制形式表示数据和指令。指令由操作码和地址码组成

    2、

    将程序和数据存放在存储器中,计算机在工作时从存储器取出指令加以执行,自动完成计算任务。

    3、

    指令的执行是顺序的,即一般按照指令在存储器中存放的顺序执行,程序分支由转移指令实现。

    4、

    计算机由存储器、运算器、控制器、输入设备和输出设备五大基本部件组成,并规定了各部件的基本功能。

    8086微处理器的构成、每一个T状态的主要工作。基本的存储读、写总线周期构成。常用的控制信号。

    总线周期是指CPU通过总线与外部(存储器或I/O端口)进行一次数据交换的过程,即完成一次总线操作的时间

    指令周期是指一条指令经取指、译码、操作数读写直到指令完成所需要的时间。

    存储器读总线周期:T1状态——输出存储器的地址

    T2状态——输出控制信号-RD,选通存储器;DEN信号,选通数据收发器

    T3和Tw状态——检测数据传送是否能够完成

    T4状态——前沿读取数据,完成数据传送

    存储器写总线周期:T1状态——输出20位存储器地址A19~

    A0

    T2状态——

    -WR信号有效,-DEN信号有效以输出数据D7~D0

    T3和Tw状态——

    -WR、-DEN等控制信号持续有效,T3时钟下降沿检测READY信号,决定是否插入Tw;Tw期间,各信号延续状态。

    T4状态——完成数据传送,并准备过渡到下一操作。-WR、-DEN转为无效。

    常用的控制信号:

    ALE地址锁存允许,输出、三态、高电平有效

    IO/-M:I/O或存储器访问,输出、三态

    -WR:写控制,输出、三态、低电平有效

    -RD:读控制,输出、三态、低电平有效

    INTR、-INTA等

    存储器地址的译码问题

    全译码:

    所有的系统地址线均参与对存储单元的译码寻址

    特点:采用全译码,每个存储单元的地址都是唯一的,不存在地址重复

    译码电路可能比较复杂、连线也较多

    部分译码:

    只有部分(高位)地址线参与对存储芯片的译码

    特点:每个存储单元将对应多个地址(地址重复),需要选取一个可用地址

    可简化译码电路的设计、但系统的部分地址空间将被浪费

    存储芯片为什么要设置片选信号?它与系统地址总线有哪些连接方式?采用何种连接方式可避免地址重复?采用哪些连接方式可节省用于译码的硬件?

    解答:

    片选信号说明该存储器芯片是否被选中正常工作,设置它可以比较方便地实现多个存储器芯片组成大容量的存储空间

    存储器片选信号通常与CPU地址总线的高位地址线相关联,可以采用“全译码”、“部分译码”、“线选译码”方式

    采用全译码方式可以避免地址重复

    采用部分或线选译码可以节省译码硬件

    8086微处理器的内部结构,EU、BIU的定义和作用,流水线。

    BIU(总线接口单元):由指令队列、指令指针、段寄存器、地址加法器和总线控制逻辑构成。该单元管理着8088与系统总线的接口、负责CPU对存储器和外设进行访问。

    EU(执行单元):由ALU、通用寄存器、标志寄存器和指令译码逻辑等构成,它负责指令的译码、执行和数据的运算。

    两个单元相互独立,分别完成各自操作。两个单元可以并行执行,实现指令取指和执行的流水线操作

    8086的寻址方式。物理地址和逻辑地址的定义。两者之间转换。8086系统存储器采用分段管理方式。(要求很熟练)

    对于每个存储器单元都有一个唯一的20位地址,称为物理地址。

    在8088的总线内部和用户编程时,所采用的“段地址:偏移地址”形式,称为逻辑地址。

    一个存储器单元可以拥有多个逻辑地址,但可能拥有唯一的物理地址。

    转换过程:先将段寄存器提供的16位段地址左移四位,低位补0,恢复为20位地址,然后与由各种寻址方式提供的16位偏移地址相加,即得到20位的物理地址。

    8086微处理器的内部构成。8086的寄存器结构,标志寄存器中每一个标志位的含义及应用。8086复位时各寄存器的初始状态。

    内部构成:算术逻辑单元(运算器)、寄存器组、指令处理单元(控制器)

    寄存器结构:8086/8088共有8个的通用寄存器,1个标志寄存器,4个段寄存器和1个指令指针寄存器。

    进位标志

    CF:计算结果的最高有效位有进位,则CF=1,否则CF=0

    溢出标志

    OF:若算术运算的结果有溢出,则OF=1;否则

    OF=0

    全零标志位

    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

    中断允许标志:

    IF=1,则允许中断,IF=0,则禁止中断

    陷阱标志TF:

    TF=0,处理器正常工作;TF=1,处理器每执行一条指令就中断一次

    中断向量表。掌握中断向量表的构成,计算中断类型号,中断服务程序入口地址。中断的工作过程。

    中断向量表是一种表数据结构,是中断向量号与其对应的中断服务程序入口之间的链接表。该地址包括:偏移地址IP

    、段地址CS

    (共32位)

    每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节(低对低,高对高)。

    8088

    微处理器从物理地址000H开始到3FFH(1KB),依次安排各个中断向量,向量号从0到255。256个中断向量所占用的1KB区域,称中断向量表

    中断向量的存放首址=N*4

    中断类型:

    8088

    CPU具有哪些中断类型?各种中断如何产生,如何得到中断向量号?

    除法错中断:在执行除法指令时,除数为0或商超过了寄存器所能表达的范围产生

    指令中断:在执行中断指令INT

    n时产生

    溢出中断:在执行溢出中断指令INTO时,溢出标志OF为1产生

    单步中断:单步标志TF为1,在每条指令执行结束后产生

    非屏蔽中断:外部通过NMI请求信号向微处理器提出请求时产生

    可屏蔽中断:外部通过INTR请求信号向微处理器提出请求,并在允许可屏蔽中断的条件下产生

    (2)除法错中断、溢出中断、单步中断、非屏蔽中断的向量号是8086微处理器内部已经确定

    指令中断的操作数n就是向量号

    可屏蔽中断的向量号在响应中断时通过数据总线从外部获得

    什么是8259A的中断结束字(EOI)?

    (1)IRi被响应时,ISR中对应的Di位被置1;

    (2)中断处理完毕,相应的Di位应置0。

    (3)向8259A送中断结束指令,使ISR的某位清0,指令的内容叫作中断结束字。

    8259A中IRR、IMR和ISR三个寄存器的含义

    中断请求寄存器IRR:

    保存8条外界中断请求信号IR0~IR7的请求状态

    Di位为1表示IRi引脚有中断请求;为0表示无请求

    中断屏蔽寄存器IMR:

    保存对中断请求信号IRi的屏蔽状态

    Di位为1表示IRi中断被屏蔽(禁止);为0表示允许

    中断服务寄存器ISR:

    保存正在被8259A处理的中断的状态

    Di位为1表示IRi中断正在处理中;为0表示没有被处理

    中断的概念。中断向量表的含义。深入理解8259的工作方式,优先权设置、中断结束处理、中断源屏蔽、中断触发等等。8259的初始化编程。中断服务程序编写。

    中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。

    优先权设置:在ISR的

    Di

    位置位期间,禁止再发生同级和低级优先权的中断,但允许高级优先权中断的嵌套

    中断结束处理:自动中断结束方式、普通中断结束方式、特殊中断结束方式;

    中断向量表的含义:256个中断向量所占用的1KB区域,称中断向量表

    计算机主机和I/O设备之间进行数据传送的方法。重点掌握查询方式完成数据传送的流程,要会编程。

    查询传送的特点是:工作可靠,适用面宽,但传送效率低

    查询输入接口(考电路):

    代码如下:

    mov

    dx,8000h

    ;dx指向状态端口

    Status:

    in

    al,dx

    ;读状态端口

    test

    al,01h

    ;测试标志位D0

    jz

    status

    ;D0=0,未就绪,继续查询

    inc

    dx

    ;D0=1,就绪,DX指向数据端口

    in

    al,dx

    ;从数据端口输入数据

    中断传送:

    中断传送是一种效率更高的程序传送方式;

    中断过程的完成由中断系统(硬件,如8259和CPU)和中断服务程序(软件)共同控制完成

    中断工作过程:

    1、

    中断请求(外设)

    2、中断响应(CPU)

    3、关中断(CPU)

    4、断点保护(CPU)

    5、中断识别(软件/硬件)

    6、现场保护(用户)

    7、中断服务(用户)

    8、恢复现场(用户)

    9、开中断(用户/CPU)

    10、中断返回(IRET/用户)

    最小组态的写总线周期时序:

    如何限制只能输入小写字母(

    61h~7Ah,课本P22),否则要求重新输入。

    .data

    msg

    db

    not

    a

    lowercase,input

    again,db0dh,0ah,$

    input:mov

    ah,1;输入小写字母

    int

    21h

    cmp

    al,61h

    jl

    once-again

    cmp

    al,7Ah

    ja

    once-again

    jmp

    convert

    once-again:

    mov

    dx,offset

    msg

    mov

    ah,9

    int

    21h

    jmp

    input

    convert:sub

    al,20h

    ;转换为大写字母

    ……

    采用查表法,实现一位16进制数转换为ASCII码显示

    04h——34h(4)

    0bh——42h(B)

    ASCIIdb

    30h,31h,32h,33h,34h,35h,36h,37h,38h,39h

    ;对应0

    ~

    9的ASCII码

    db

    41h,42h,43h,44h,45h,46h

    ;对应A

    ~

    F的ASCII码

    hexdb

    04h,0bh

    ;假设两个16进制数

    ;代码段

    mov

    bx,offset

    ASCII

    ;BX指向ASCII码表

    mov

    al,hex

    ;AL取得一位16进制数;恰好就是ASCII码表中的位移

    and

    al,0fh

    ;只有低4位是有效的,高4位清0

    xlat

    ;换码:AL←DS:[BX+AL]

    mov

    dl,al;欲显示的ASCII码送DL

    mov

    ah,2;2号DOS功能调用

    int

    21h;显示一个ASCII码字符

    mov

    al,hex+1;转换并显示下一个数据

    and

    al,0fh

    xlat

    mov

    dl,al

    mov

    ah,2

    int

    21h

    编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。(可调用书中的HTOASC子程序)

    HTOASCproc

    and

    al,0fh

    ;al低四位保存待转;换的16进制数

    cmp

    al,9

    jbe

    htoasc1

    add

    al,37h

    ;是A

    ~

    F,加37H

    ret

    ;子程序返回

    htoasc1:add

    al,30h

    ;0

    ~

    9,加30H

    ret

    ;子程序返回

    HTOASCendp

    push

    ax

    mov

    cl,4

    ror

    al,cl

    call

    HTOASC

    call

    disp_a_char

    pop

    ax

    call

    HTOASC

    call

    disp_a_char

    把从键盘输入的一个小写字母用大写字母显示出来(大小写字母转换)。

    mov

    ah,1;输入小写字母

    int

    21h

    sub

    al,20h;转换为大写字母

    mov

    dl,al

    mov

    ah,2

    int

    21h;显示

    写一个子程序,根据入口参数AL=0、1、2,依次实现对大写字母转换成小写、小写转换成大写或大小写字母互换。欲转换的字符串在string中,用0表示结束。

    lucaseproc

    push

    bx

    mov

    bx,offset

    string

    cmp

    al,0

    je

    case0

    cmp

    al,1

    jz

    case1

    cmp

    al,2

    jz

    case2

    jmp

    done

    case0:cmp

    byte

    ptr

    [bx],0

    je

    done

    cmp

    byte

    ptr

    [bx],’A’

    jb

    next0

    cmp

    byte

    ptr

    [bx],’Z’

    ja

    next0

    add

    byte

    ptr

    [bx],20h

    next0:inc

    bx

    jmp

    case0

    case1:cmp

    byte

    ptr

    [bx],0

    je

    done

    cmp

    byte

    ptr

    [bx],’a’

    jb

    next1

    cmp

    byte

    ptr

    [bx],’z’

    ja

    next1

    sub

    byte

    ptr

    [bx],20h

    next1:inc

    bx

    jmp

    case1

    case2:cmp

    byte

    ptr

    [bx],0

    je

    done

    cmp

    byte

    ptr

    [bx],’A’

    jb

    next2

    cmp

    byte

    ptr

    [bx],’Z’

    ja

    next20

    add

    byte

    ptr

    [bx],20h

    jmp

    next2

    next20:cmp

    byte

    ptr

    [bx],’a’

    jb

    next2

    cmp

    byte

    ptr

    [bx],’z’

    ja

    next2

    sub

    byte

    ptr

    [bx],20h

    next2:inc

    bx

    jmp

    case2

    done:pop

    bx

    ret

    lucaseendp

    循环累加(调用子程序)

    arraydb

    12h,25h,0f0h,0a3h,3,68h,71h,0cah,0ffh,90h

    countequ

    $-array;数组元素个数

    resultdb

    ?;校验和;代码段(主程序)

    mov

    bx,offset

    array;BX←数组的偏移地址

    mov

    cx,count;CX←数组的元素个数

    call

    checksum;调用求和过程

    mov

    result,al;处理出口参数

    checksumproc

    xor

    al,al;累加器清0

    sum:add

    al,[bx];求和

    inc

    bx;指向下一个字节

    loop

    sum

    Ret

    Checksum

    endp

    计算AX中有符号数的绝对值

    cmp

    ax,0

    jge

    nonneg;条件满足(AX≥0),转移

    neg

    ax;条件不满足,求补(即绝对值P43)

    nonneg:

    mov

    result,ax;保存结果;不恰当的分支

    cmp

    ax,0

    jl

    yesneg;条件满足(AX<0),转移

    jmp

    nonneg

    yesneg:neg

    ax;条件满足,求补

    nonneg:mov

    result,ax;保存结果

    设置两个变量maxay和minay存放最大和最小值

    arraydw

    10

    dw

    -3,0,20,900,587,-632,777,234,-34,-56

    maxaydw

    ?;存放最大值

    minaydw

    ?;存放最小值

    lea

    si,array

    mov

    cx,[si];取得元素个数

    dec

    cx;减1后是循环次数

    add

    si,2

    mov

    ax,[si]

    mov

    bx,ax

    maxck:add

    si,2

    cmp

    [si],ax;与下一个数据比较

    jle

    minck

    mov

    ax,[si];AX取得更大的数据

    jmp

    next

    minck:cmp

    [si],bx

    jge

    next

    mov

    bx,[si];BX取得更小的数据

    next:loop

    maxck;计数循环

    mov

    maxay,ax;保存最大值

    mov

    minay,bx;保存最小值

    挑出数组中正数(不含0)和负数,分别形成正、负数组

    DATAS

    SEGMENT

    count

    equ

    10

    array

    dw

    23h,9801h…

    ayplus

    dw

    count

    dup(0)

    ayminus

    dw

    count

    dup(0)

    DATAS

    ENDS

    STACKS

    SEGMENT

    STACKS

    ENDS

    CODES

    SEGMENT

    ASSUME

    CS:CODES,DS:DATAS,SS:STACKS

    START:

    MOV

    AX,DATAS

    MOV

    DS,AX

    mov

    si,offset

    array

    mov

    di,offset

    ayplus

    mov

    bx,offset

    ayminus

    mov

    ax,ds

    mov

    es,ax

    mov

    cx,count

    cld

    again:

    lodsw

    cmp

    ax,0

    jl

    minus

    jz

    next

    minus:

    xchg

    bx,di

    stosw

    xchg

    bx,di

    next:

    loop

    again

    MOV

    AH,4CH

    INT

    21H

    CODES

    ENDS

    END

    START

    8259A

    的初始化程序段(7.8)

    mov

    al,13H

    ;写入ICW1:设定边沿触发方式,单片方式

    mov

    dx,0FFDCH

    out

    dx,al

    jmp

    intr1

    intr1:mov

    al,90H

    ;写入ICW2:设定IR0的中断向量号为90h

    mov

    dx,0FFDEH

    out

    dx,al

    jmp

    intr2

    intr2:mov

    al,1

    ;写入ICW4:设定普通嵌套方式,普通中断方式

    mov

    dx,0FFDEH

    out

    dx,al

    8259的初始化编程:

    主片:

    mov

    al,11h;写入ICW1

    out

    20h,al

    intr1:mov

    al,08h;写入ICW2

    out

    21h,al

    intr2:mov

    al,04h;写入ICW3

    out

    21h,al

    intr3:mov

    al,05h;写入ICW4

    out

    21h,al

    从片:

    mov

    al,11h;写入ICW1

    out

    0a0h,al

    intr5:mov

    al,70h;写入ICW2

    out

    0a1h,al

    intr6:mov

    al,02h;写入ICW3

    out

    0a1h,al

    intr7:mov

    al,01h;写入ICW4

    out

    0a1h,al

    试按如下要求分别编写8253的初始化程序,已知8253的计数器0~2和控制字I/O地址依次为204H~207H。⑶

    使计数器2工作在方式2,计数值为02F0H。

    mov

    al,0b4h

    mov

    dx,207h

    out

    dx,al

    mov

    ax,02f0h

    mov

    dx,206h

    out

    dx,al

    ;先写入低字节

    mov

    al,ah

    out

    dx,al

    ;后写入高字节

    8255的初始化编程

    要求:A口:方式1输入、CH口:输出、CL口:输入、B口:方式0输出

    方式控制字:1

    0110

    001

    B或B1H

    初始化的程序段:

    mov

    dx,0fffeh;假设控制端口为FFFEH

    mov

    al,0b1h;方式控制字

    out

    dx,al;送到控制端口

    某系统中8253芯片中计数器的0-2和控制字端口地址分别是FFF0H~FFF3H。

    编写8253两个计数器初始化程序及两个计数器的连通图。

    计数器0的计数值:5M/1K=5000=1388H

    方式控制字:00100101=25H、2DH、35H、3DH

    (十进制计数)

    00100100=24H、2CH、34H、3CH

    (二进制计数)

    计数器1的计数值:1000

    方式控制字:01101001=69H、79H

    (十进制计数)

    01101000=68H、78H

    (二进制计数)

    MOV

    DX,0FFF3H

    MOV

    AL,25H

    ;通道0,只写高字节,方式2,十进制

    OUT

    DX,AL

    MOV

    DX,0FFF0H

    MOV

    AL,50H

    ;计数初值5000

    OUT

    DX,AL

    MOV

    DX,0FFF3H

    MOV

    AL,69H

    ;通道1,方式4

    OUT

    DX,AL

    MOV

    DX,0FFF1H

    MOV

    AL,10H

    ;计数初值1000

    OUT

    DX,AL

    3、某字符输出设备(如打印机),其数据口和状态口的地址均为80H。在读取状态时,当标志位D7=0时,表明该设备闲,可以接收一个字符,请编写利用查询方式进行数据传送的程序段。要求将存放于符号地址addr处的一串字符(以$为结束标志)输出给该设备。

    mov

    bx,offset

    addr

    ;利用offset操作符,可在汇编过程中得到addr的偏移地址

    again:mov

    ah,[bx]

    cmp

    ah,’$’

    jz

    done

    status:in

    al,80h

    ;查询一次

    test

    al,80h

    ;两个80h不一样

    jnz

    status

    ;D7=1,表示设备忙,继续查询

    mov

    al,ah

    out

    80h,al

    ;输出一个字节

    inc

    bx

    jmp

    again

    ;循环

    done:……

    如图10.23为用一片8255A控制8个8段共阴极LED数码管的电路。现要求按下某个开关,其代表的数字(K1为1,K2为2,…K8为8)在数码管从左到右循环显示(已有一个延时子程序delay可以调用),直到按下另一个开关。假定8255A的数据端口A、B、C及控制端口的地址依次为FFF8H~FFFBH。编写完成上述功能的程序,应包括8255A的初始化、控制程序和数码管的显示代码表

    ;显示代码表

    tabledb

    0c0h;对应0(任意)

    db

    0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h

    ;对应1~8

    ;8255A初始化

    mov

    dx,0fffbh

    mov

    al,10001001b;=89h

    out

    dx,al

    ;控制程序

    again0:mov

    dx,0fffah;输入开关状态

    in

    al,dx

    mov

    cx,8;确定哪个开关闭合

    mov

    ah,01h;mov

    ah,08h

    again1:shr

    al,1;shl

    al,1

    jnc

    disp0

    inc

    ah;dec

    ah

    loop

    again1

    jmp

    disp1;显示字段

    disp0:mov

    bx,offset

    table

    mov

    al,ah

    xlat

    mov

    dx,0fff8h

    out

    dx,al;输出段码

    disp1:mov

    cx,8;循环显示8位

    mov

    al,01h

    mov

    dx,0fff9h

    disp2:out

    dx,al;输出位码

    call

    delay

    shl

    al,1

    loop

    disp2

    jmp

    again0;写入方式字

    mov

    al,100×00×1b;=81h

    mov

    dx,控制口地址;0fffeh

    out

    dx,al;加入下一段更好,使L0~L3全亮

    mov

    al,0fh

    mov

    dx,端口C地址;0fffch

    out

    dx,al;控制程序段

    mov

    dx,端口C地址;0fffch

    in

    al,dx;读入PC0~PC3

    mov

    cl,4shl

    al,cl;左移4位

    out

    dx,al;控制PC4~PC7

    以8255的B口作输入口、连接逻辑电平开关;以8255的A口作输出口、连接发光二极管电路。要求:当输入不是全0时,输出与输入保持一致(即高电平时点亮);当输入是全0时,令发光二极管循环点亮(或闪烁告警)。

    begin:

    mov

    dx,portc

    ;

    8255

    初始化

    mov

    al,82h

    A组方式0,A口出,

    B组方式0,B口入

    out

    dx,al

    mov

    ah,0ffh

    mov

    bl,0

    lp:

    mov

    dx,portb

    ;

    B

    口读入开关状态

    in

    al,dx

    test

    al,ah

    ;与ffh比较,看是否8个开关全闭合(0信号)

    jz

    shift

    mov

    dx,porta

    ;

    A

    口输出开关状态

    not

    al

    out

    dx,al

    jmp

    lp

    shift:

    mov

    al,bl

    ;bl初值为0

    mov

    dx,porta

    not

    al

    out

    dx,al

    call

    delay

    ;

    延时

    shl

    bl,1

    ;

    移位

    test

    bl,ah

    ;ah初值为ffh

    jnz

    lp

    mov

    bl,1

    jmp

    lp

    2、如果有一个输入设备,其数据口地址为FFE0H,状态口地址为FFE2H,当状态标志D0=1时,表明一个字节的输入数据就绪,请编写利用查询方式进行数据传送的程序段。要求从该设备读取100个字节并写到从2000H:2000H开始的内存中。

    通过读取状态寄存器的标志位来检查外设是否就绪。若不就绪就继续查询,即程序不断循环;直至就绪。然后,进行下一步的传送工作。

    mov

    bx,2000h

    mov

    ds,bx

    mov

    cx,100

    again:mov

    dx,0ffe2h

    status:in

    al,dx

    ;读入状态标志D0

    test

    al,01h

    ;al

    输入一个字节

    mov

    [bx],al

    ;al→ds:[bx],寄存器间接寻址

    inc

    bx

    查询方式完成数据传送。

    1、编程实现以下功能:当K0键单独按下时,发光二极管L0~L7将流水点亮(Ln→Ln+1),每个维持200ms;当K1键单独按下时,发光二极管L0~L7将反向流水点亮(Ln←Ln+1),每个也维持200ms;在其他情况下各发光二极管均不点亮。假定有延时200ms的子程序DELAY可直接调用。

    again:

    mov

    dx,8000h

    ;8000h是I/O端口地址

    in

    al,dx

    ;读入端口数据

    not

    al

    ;开关闭合,读入数据是0;反相,保证如图二极管点亮;

    cmp

    al,1

    ;K7~K0=11111110B

    ?或al=00000001B?

    je

    l1

    ;单独按下K0,转移到l1

    cmp

    al,2

    je

    l2

    ;单独按下K1,转移到l2

    jmp

    again

    ;其它情况,都不亮

    l1:

    mov

    cx,8

    ;计数器设为8

    mov

    al,1

    l11:

    out

    dx,al

    ;点亮一个LED

    call

    delay

    ;调用延时子程序,点亮状态保持200ms

    rol

    al,1

    ;循环左移(shl行吗?)

    loop

    l11

    ;循环直到cx减到0为止

    jmp

    again

    ;转到起点,继续查询端口变动

    l2:

    mov

    cx,8

    ;计数器设为8

    mov

    al,1

    l21:

    out

    dx,al

    ;点亮一个LED

    call

    delay

    ;调用延时子程序,点亮状态保持200ms

    ror

    al,1

    loop

    l21

    ;

    jmp

    again

    delay

    proc

    mov

    cx,0bfffh

    ;延时200ms。0bffh=3071(D),

    loop

    $

    ;延时时间=49151*33

    (时钟周期)/8000000(CPU工作频率)≈200ms

    delay

    endp

    loop

    again

    ;循环,输入100个字节

    4、按照图6-14所示的中断查询接口与相应的流程图,请编写用于中断服务的程序段。具体要求是,当程序查到中断设备A有中断请求(对应数据线D0),它将调用名为PROC0的子程序;如此,依次去查中断设备B~中断设备D,并分别调用名为PROC1~PROC3的子程序。

    sti

    ;开中断

    push

    ax

    push

    dx

    ……

    mov

    dx,8001h

    ;接口地址是8001h

    status:in

    al,dx

    test

    al,01h

    jnz

    service0

    test

    al,02h

    jnz

    service1

    test

    al,04h

    jnz

    service2

    test

    al,08h

    jnz

    service3

    ……

    service0:call

    proc0

    jmp

    done

    service1:call

    proc1

    jmp

    done

    service2:call

    proc2

    jmp

    done

    service3:call

    proc3

    jmp

    done

    ……

    done:pop

    dx

    pop

    ax

    iret

    ;中断返回

    15

    篇2:北京邮电大学微机原理硬件实验报告

    北京邮电大学微机原理硬件实验报告 本文关键词:微机,北京,邮电大学,原理,实验

    北京邮电大学微机原理硬件实验报告 本文简介:实验报告一:I/0地址译码和简单并行接口——实验一点亮灯CALLDELAY;延时MOVDX,2A8HOUTDX,AL;熄灭灯CALLDELAYJMPLOPCODEENDSENDSTARTDELAYPROCNEAR;延时子程序PUSHCXPUSHBXMOVBX,250;250×65535LP2:MOV

    北京邮电大学微机原理硬件实验报告 本文内容:

    实验报告一:I/0地址译码和简单并行接口

    ——实验一点亮灯

    CALL

    DELAY

    ;延时

    MOV

    DX,2A8H

    OUT

    DX,AL

    ;熄灭灯

    CALL

    DELAY

    JMP

    LOP

    CODE

    ENDS

    END

    START

    DELAY

    PROC

    NEAR

    ;延时子程序

    PUSH

    CX

    PUSH

    BX

    MOV

    BX,250

    ;250×65535

    LP2:

    MOV

    CX,0FFFFH

    LP1:

    LOOP

    LP1

    DEC

    BX

    JNZ

    LP2

    POP

    BX

    POP

    CX

    RET

    DELAY

    ENDP

    2、简单并行接口电路

    STACK

    SEGMENT

    STACK

    STACK

    DB

    100

    DUP(?)

    STACK

    ENDS

    DATA

    SEGMENT

    DATA

    ENDS

    CODE

    SEGMENT

    ASSUME

    CS:CODE,SS:STACK,DS:DATA

    START:MOV

    AX,DATA

    MOV

    DS,AX

    LOP:

    MOV

    AH,01H

    INT

    21H

    CMP

    AL,1BH

    ;检查是否按下退出esc键

    JZ

    ENDING

    MOV

    DX,2A8H

    ;将ascii码输出

    OUT

    DX,AL

    JMP

    LOP

    ENDING:MOV

    AL,0

    OUT

    DX,AL

    MOV

    AX,4C00H

    INT

    21H

    CODE

    ENDS

    END

    START

    六、

    实验总结

    在这三次实验中出现的问题以及相应的解决方法如下:

    实验一:因为对D触发器的特性有些遗忘,在编写程序时犯了不少错误,最终通过请教助教解决了一些疑问,从而顺利写出了代码。

    实验二:实验二的程序逻辑比较简单,但连线比较多,在实验过程中,也多次连错了线,通过检查纠正了连线错误,也很快完成了实验。

    七、

    实验收获与心得体会

    这次实验是第一次用汇编语言控制接口,因为理论课尚未讲到相关内容,做实验时,上手地比较慢。通过实验一实验二,熟练了对IN、OUT指令的使用,对接口有了初步认识。同时通过研究译码电路,对“地址”也有了进一步的认识。

    实验报告二:可编程并行接口8255的应用

    ——实验三A口输出C口输入,工作方式为00

    MOV

    DX,28BH

    ;控制端口地址

    OUT

    DX,AL

    ;8255初始化,写入工作方式控制字

    LOP:

    MOV

    DX,28AH

    ;将开关状态读入

    IN

    AL,DX

    MOV

    DX,288H

    ;讲状态输出到A口

    OUT

    DX,AL

    MOV

    AH,0BH

    ;检测键盘状态

    INT

    21H

    CMP

    AL,0FFH

    ;如果键盘上有输入则停止程序

    JZ

    ENDING

    JMP

    LOP

    ENDING:MOV

    AL,0

    MOV

    DX,288H

    OUT

    DX,AL

    MOV

    AX,4C00H

    INT

    21H

    CODE

    ENDS

    END

    START

    b)

    实验四

    STACK

    SEGMENT

    STACK

    STACK

    DB

    100

    DUP(?)

    STACK

    ENDS

    DATA

    SEGMENT

    DATA

    ENDS

    CODE

    SEGMENT

    ASSUME

    CS:CODE,SS:STACK,DS:DATA

    START:MOV

    AX,DATA

    MOV

    DS,AX

    MOV

    AL,10000000B

    MOV

    DX,28BH

    OUT

    DX,AL;8255初始化

    LOP:

    MOV

    AL,3FH;

    将0的段码输出给A口

    MOV

    DX,288H

    OUT

    DX,AL

    MOV

    AL,08H;输出位码给C口

    MOV

    DX,28AH

    OUT

    DX,AL

    CALL

    DELAY;延时程序

    MOV

    AL,06H

    ;将1的段码输出的A口

    MOV

    DX,288H

    OUT

    DX,AL

    MOV

    AL,04H

    ;输出选通位码

    MOV

    DX,28AH

    OUT

    DX,AL

    CALL

    DELAY

    MOV

    AL,7FH

    ;将8的段码输出的A口

    MOV

    DX,288H

    OUT

    DX,AL

    MOV

    AL,02H;输出选通位码

    MOV

    DX,28AH

    OUT

    DX,AL

    CALL

    DELAY

    MOV

    AL,06H;将8的段码输出的A口

    MOV

    DX,288H

    OUT

    DX,AL

    MOV

    AL,01H

    ;输出选通位码

    MOV

    DX,28AH

    OUT

    DX,AL

    call

    DELAY

    MOV

    AH,0BH

    ;检查键盘是否有输入

    INT

    21H

    CMP

    AL,0ffh

    JZ

    ENDING

    ;有则退出

    JMP

    LOP

    ENDING:

    MOV

    AL,00H

    MOV

    DX,28AH

    OUT

    DX,AL

    MOV

    AX,4C00H

    INT

    21H

    DELAY

    PROC

    NEAR

    PUSH

    CX

    PUSH

    BX

    MOV

    BX,005H

    ;250×65535

    LP2:

    MOV

    CX,0fFFFH

    LP1:

    LOOP

    LP1

    DEC

    BX

    JNZ

    LP2

    POP

    BX

    POP

    CX

    RET

    DELAY

    ENDP

    CODE

    ENDS

    END

    START

    c)

    实验五

    STACK

    SEGMENT

    STACK

    STACK

    DB

    100

    DUP(?)

    STACK

    ENDS

    DATA

    SEGMENT

    KEYVALUE

    DB

    71H,7CH,07H,4FH

    ;键盘值对应的段码表,LINE0

    DB

    79H,77H,7DH,5BH

    ;LINE1

    DB

    5EH,6FH,6DH,06H

    ;LINE2

    DB

    39H,7FH,66H,3FH

    ;LINE3

    ROW

    DB

    0EFH,0DFH,0BFH,7FH

    DATA

    ENDS

    CODE

    SEGMENT

    ASSUME

    CS:CODE,SS:STACK,DS:DATA

    START:MOV

    AX,DATA

    MOV

    DS,AX

    MOV

    AL,10000001B;C口高4位接键盘行输出,低4位列输入,A口输出

    MOV

    DX,28BH

    OUT

    DX,AL

    LEA

    BX,KEYVALUE

    MOV

    SI,0

    SCANROW:MOV

    AL,ROW[SI]

    ;扫描行

    MOV

    DX,28AH

    OUT

    DX,AL

    ;输出行

    CALL

    DELAY

    ;延迟消抖

    IN

    AL,DX

    ;读取列

    AND

    AL,0FH

    CMP

    AL,0FH

    JZ

    NEXT

    ;此行无键按下

    CMP

    AL,0EH

    JZ

    LINE0

    ;按下第0列的键

    CMP

    AL,0DH

    JZ

    LINE1;按下第1列的键

    CMP

    AL,0BH

    JZ

    LINE2;按下第2列的键

    JMP

    LINE3

    NEXT:

    INC

    SI

    CMP

    SI,4

    JB

    NEXT1

    MOV

    SI,0

    NEXT1:JMP

    SCANROW

    LINE0:MOV

    CL,[BX+SI+0];查表或许按下的键相应的输出段码

    JMP

    OUTPUT

    LINE1:MOV

    CL,[BX+SI+4]

    JMP

    OUTPUT

    LINE2:MOV

    CL,[BX+SI+8]

    JMP

    OUTPUT

    LINE3:MOV

    CL,[BX+SI+12]

    OUTPUT:CMP

    CL,3FH

    ;检查是否是0,是0就退出

    JZ

    ENDING

    MOV

    AL,CL

    MOV

    DX,288H

    ;传送段码给A口

    OUT

    DX,AL

    MOV

    AL,01H

    ;传送位码给B口

    MOV

    DX,289H

    OUT

    DX,AL

    MOV

    SI,0

    JMP

    SCANROW

    ;继续扫描

    ENDING:MOV

    AL,00

    MOV

    DX,289H

    OUT

    DX,AL

    MOV

    AX,4C00H

    INT

    21H

    DELAY

    PROC

    NEAR

    PUSH

    CX

    PUSH

    BX

    MOV

    BX,1

    ;250×65535

    LP2:

    MOV

    CX,0FFFH

    LP1:

    LOOP

    LP1

    DEC

    BX

    JNZ

    LP2

    POP

    BX

    POP

    CX

    RET

    DELAY

    ENDP

    CODE

    ENDS

    END

    START

    六、

    实验总结

    在这三次实验中出现的问题以及相应的解决方法如下:

    实验三:一开始没法用开关控制LED的亮灭,程序一运行就直接退出了,检查代码发现自己的退出条件写错了,修改后就能正常工作了。

    实验四:四个数码管显示不正常,四个数字都没法稳定的显示,经过调整延时的大小,能够使后两个数码管正常显示,但前两个数码管不受控制,最后发现是前两个数码管坏了。

    实验五:按下的键与数码管中显示的图形不一样,经过检查代码和实验箱,发现代码中按键对应的段码表行列顺序与实验箱不一致,经过调整,解决了不一致的问题。

    七、

    实验收获与心得体会

    这三次实验都是围绕着8255并行接口做一些小的应用,其中实验三与实验四逻辑比较简单,实验五稍微难一点,因为理论课还未讲到接口部分,硬件实验需要自己自学接口电路,但从中收获了不少知识,大致明白了如何使用一个接口芯片,学会了自己看手册,根据说明来编程使用接口电路,对地址有了更深刻的理解。

    代码都是实验前自己课下独立编写的,因此上实验室操作时比较顺利,但也遇到了一些小错误,但也都独立解决了,在这样的一个过程中,增强了自己的学习能力和独立解决问题的能力。

    实验报告三:可编程定时器/计数器(8253/8254)

    一、实验目的

    学习掌握8253用作定时器的编程原理;

    二、实验原理及内容

    (1)8253应用小结

    8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。

    1.8253初始化

    使用8253前,要进行初始化编程。初始化编程的步骤是:

    向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。

    向使用的计数器端口写入计数初值。

    2.8253控制字

    D7D6=00:使用0号计数器,D7D6=01:使用1号计数器

    D7D6=10:使用2号计数器,D7D6=11:无效

    D5D4=00:锁存当前计数值

    D5D4=01:只写低8位(高8位为0),读出时只读低8位

    D5D4=10:只写高8位(低8位为0),读出时只读高8位

    D5D4=11:先读/写低8位,后读/写高8位计数值

    D3D2D1=000:选择方式0,D3D2D1=001:选择方式1

    D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3

    D3D2D1=100:选择方式4,D3D2D1=101:选择方式5

    D0=0:计数初值为二进制,D0=1:计数初值为BCD码数

    (2)实验电路

    1、按图4-8-1虚线连接电路

    2、接线:

    CS

    /8253

    Y0

    /IO

    地址

    GATE0

    /8253

    +5V

    CLK0

    /8253

    1M时钟

    OUT0

    /8253

    喇叭或蜂鸣器

    (3)实验内容

    1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。

    2.扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。

    注意:8253输入频率应小于2MHz。

    三、硬件连线图

    四、软件流程图

    1、主程序流程

    2、

    放音子程序流程

    3、

    弹琴子程序流程

    4、

    五、源程序

    STACK

    SEGMENT

    STACK

    STACK

    DB

    100

    DUP(?)

    STACK

    ENDS

    DATA

    SEGMENT

    INPUTINFO

    DB

    0AH,0DH,Please

    choose

    mode:1

    is

    playing

    music;2

    is

    spieling,0AH,0DH

    DB

    $

    ERROR_INFO

    DB

    0AH,0DH,illegal

    input,please

    input

    again!,0AH,0DH,$

    TONE

    DW

    3906,3472,3125,2932,2604,2347,2083

    ;音调1-7

    计数初始值

    TIME

    DW

    1000H,1000H,1000H,2000H,2000H,4000H,4000H

    ;持续时间

    DUANMA

    DB

    06H,5BH,4FH,66H,6DH,7DH,07H

    ;与乐谱所对应的数码管段码

    KEYVALUE

    DB

    71H,7CH,07H,4FH

    ;键盘值对应的段码表,LINE0

    DB

    79H,77H,7DH,5BH

    ;LINE1

    DB

    5EH,6FH,6DH,06H

    ;LINE2

    DB

    39H,7FH,66H,3FH

    ;LINE3

    TUNEK

    DW

    0,0,2083,3125

    DW

    0,0,2347,3472

    DW

    0,0,2604,3906

    DW

    0,0,2932,0

    ROW

    DB

    0EFH,0DFH,0BFH,7FH

    DATA

    ENDS

    CODE

    SEGMENT

    ASSUME

    CS:CODE,SS:STACK,DS:DATA

    START:MOV

    AX,DATA

    MOV

    DS,AX

    MOV

    AL,10000001B;8255初始化;C口高4位接键盘行输出,低4位列输入,A口输出

    MOV

    DX,28BH

    OUT

    DX,AL

    MOV

    AL,00110110B

    ;8253初始化,工作方式3,使用计时器0

    MOV

    DX,283H

    OUT

    DX,AL

    BEGIN:MOV

    AH,09H

    ;输入提醒,选择放音或弹琴模式或者退出程序

    LEA

    DX,INPUTINFO

    INT

    21H

    MOV

    AH,01H

    INT

    21H

    CMP

    AL,1

    JZ

    PLAY_MUSIC

    CMP

    AL,2

    JZ

    SPIELING

    CMP

    AL,1BH

    JZ

    ENDING

    JMP

    INPUT_ERROR

    ;输入检错

    INPUT_ERROR:MOV

    AH,09H

    LEA

    DX,ERROR_INFO

    INT

    21H

    JMP

    BEGIN

    PLAY_MUSIC:CALL

    PLAYMUSIC

    JMP

    BEGIN

    SPIELING:CALL

    SPIELINGP

    JMP

    BEGIN

    ENDING:

    MOV

    AX,4C00H

    INT

    21H

    PLAYMUSIC

    PROC

    PUSH

    SI

    ;保护现场数据

    PUSH

    DI

    PUSH

    AX

    PUSH

    BX

    PUSH

    CX

    PUSH

    DX

    LEA

    SI,TONE

    ;音调表

    LEA

    DI,TIME

    ;每一个音调持续时间表

    LEA

    BX,DUANMA;段码表

    MOV

    CX,7

    ;循环控制变量赋值

    LOP1:

    MOV

    AX,[SI]

    ;计数器赋值

    MOV

    DX,280H;

    计时器0的地址

    OUT

    DX,AL

    ;先写入低八位,再写入高八位

    MOV

    AL,AH

    OUT

    DX,AL

    INC

    SI

    INC

    SI

    MOV

    AL,[BX]

    ;在数码管上显示乐谱

    MOV

    DX,288H

    ;8255A口地址

    OUT

    DX,AL

    INC

    BX

    MOV

    AL,01H

    ;传送位码给B口

    MOV

    DX,289H

    OUT

    DX,AL

    MOV

    AX,[DI];延迟,AX为入口参数

    CALL

    DELAY

    INC

    DI

    INC

    DI

    MOV

    AH,0BH

    ;检测键盘是否有输入,有则跳出

    INT

    21H

    CMP

    AL,0FFH

    JZ

    POUT

    LOOP

    LOP1

    LEA

    SI,TONE

    LEA

    DI,TIME

    LEA

    BX,DUANMA

    MOV

    CX,7

    ;重新循环

    JMP

    LOP1

    POUT:

    POP

    DX

    POP

    CX

    POP

    BX

    POP

    AX

    POP

    DI

    POP

    SI

    RET

    PLAYMUSIC

    ENDP

    SPIELINGP

    PROC

    PUSH

    AX

    PUSH

    BX

    PUSH

    CX

    PUSH

    DX

    PUSH

    BP

    PUSH

    SI

    PUSH

    DI

    LEA

    BX,KEYVALUE

    LEA

    BP,TUNEK

    MOV

    SI,2;只扫描2,3行(0123

    4567)

    SCANROW:MOV

    AL,ROW[SI]

    ;扫描行

    MOV

    DX,28AH

    OUT

    DX,AL

    ;输出行

    PUSH

    AX

    MOV

    AX,1

    CALL

    DELAY

    ;延迟消抖

    POP

    AX

    IN

    AL,DX

    ;读取列

    AND

    AL,0FH

    CMP

    AL,0FH

    JZ

    NEXT

    ;此行无键按下

    CMP

    AL,0EH

    JZ

    LINE0

    CMP

    AL,0DH

    JZ

    LINE1

    CMP

    AL,0BH

    JZ

    LINE2

    JMP

    LINE3

    NEXT:

    MOV

    AL,36H

    ;键盘弹起,对8253重新初始化,是蜂鸣器停止发音

    MOV

    DX,283H

    OUT

    DX,AL

    INC

    SI

    CMP

    SI,4

    JB

    NEXT1

    MOV

    SI,2

    NEXT1:JMP

    SCANROW

    LINE0:MOV

    CL,[BX+SI+0]

    ;查表

    MOV

    DI,SI

    SHL

    DI,1

    MOV

    AX,DS:[BP+DI+0]

    JMP

    OUTPUT

    LINE1:MOV

    CL,[BX+SI+4]

    MOV

    DI,SI

    SHL

    DI,1

    MOV

    AX,DS:[BP+DI+8]

    JMP

    OUTPUT

    LINE2:MOV

    CL,[BX+SI+8]

    MOV

    DI,SI

    SHL

    DI,1

    MOV

    AX,DS:[BP+DI+16]

    JMP

    OUTPUT

    LINE3:MOV

    CL,[BX+SI+12]

    MOV

    DI,SI

    SHL

    DI,1

    MOV

    AX,DS:[BP+DI+24]

    OUTPUT:CMP

    CL,3FH

    ;检查是否是0,是0就退出

    JZ

    ENDSP

    MOV

    DX,280H

    ;

    输出数据给计数器

    OUT

    DX,AL

    MOV

    AL,AH

    OUT

    DX,AL

    MOV

    AL,CL

    ;数码管显示乐谱

    MOV

    DX,288H

    ;传送段码给A口

    OUT

    DX,AL

    MOV

    AL,01H

    ;传送位码给B口

    MOV

    DX,289H

    OUT

    DX,AL

    JMP

    SCANROW

    ;继续扫描

    ENDSP:POP

    DI

    POP

    SI

    POP

    BP

    POP

    DX

    POP

    CX

    POP

    BX

    POP

    AX

    RET

    SPIELINGP

    ENDP

    DELAY

    PROC

    NEAR

    PUSH

    CX

    PUSH

    AX

    ;

    MOV

    AX,1

    ;250×65535

    LP2:

    MOV

    CX,08FFH

    LP1:

    LOOP

    LP1

    DEC

    AX

    JNZ

    LP2

    POP

    AX

    POP

    CX

    RET

    DELAY

    ENDP

    CODE

    ENDS

    END

    START

    六、实验总结

    在本次实验中主要出现了如下问题:

    延迟函数没处理好,在本次实验中,我将弹琴功能和放音功能写在同一个程序中,两个部分都需要使用到延迟函数,在放音子程序中,延迟函数起到控制音调持续时间长短的作用,在弹琴功能中,延迟函数主要起键盘消抖的作用。不同的作用所要求的延迟时间长短不一样,一开始没注意到这个问题,导致放出来的音乐很刺耳。

    七、实验收获与心得体会

    本次实验主要内容是使用8254定时器来播放音乐,经过前几次实验,自己对接口电路的使用越来越熟练,按照手册对接口电路进行初始化和读写即可。实验过程也并不是一帆风顺,出现了一些错误,通过解决代码中的错误,我的调试能力得到了很大的锻炼,也变得更加有耐心去解决一些问题。

    实验报告四:串行通讯8251

    一、

    实验目的

    1、了解串行通讯的基本原理。

    2、掌握串行接口芯片8251的工作原理和编程方法。

    二、

    实验原理及内容

    1、按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

    2、编程:

    从键盘输入一个字符,将其ASCII码加

    1

    后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。)实现自发自收。

    3、接线:

    CLK0

    /8254

    1M时钟

    GATE0

    /8254

    +5V

    0UT0

    /8254

    TX/RXCLK

    /8251

    CS

    /8254

    Y0

    /IO地址

    CS

    /8251

    Y7

    /IO地址

    RXD

    /8251

    TXD

    /8251

    三、

    硬件连线图

    四、

    软件流程图

    五、

    源程序

    STACK

    SEGMENT

    STACK

    STACK

    DB

    100

    DUP(

    0

    )

    STACK

    ENDS

    DATA

    SEGMENT

    REMIND_MSG

    DB

    0AH,0DH,please

    input

    character:,0AH,0DH,$

    NEXTROW

    DB

    0AH,0DH,$

    DATA

    ENDS

    CODE

    SEGMENT

    ASSUME

    DS:DATA,CS:CODE,SS:STACK

    START:MOV

    AX,DATA

    MOV

    DS,AX

    MOV

    AL,52

    ;设置8253计数器初值为52

    MOV

    DX,280H

    OUT

    DX,AL

    MOV

    DX,2B9H

    MOV

    AL,40H;先内部复位

    OUT

    DX,AL

    NOP

    MOV

    AL,01111110B

    ;方式控制字

    OUT

    DX,AL

    NOP

    MOV

    AL,37H;命令控制字

    OUT

    DX,AL

    NOP

    MOV

    AH,09H;输出提示语

    LEA

    DX,REMIND_MSG

    INT

    21H

    LOP:

    MOV

    DX,2B9H

    ;读状态字,检查发送器是否准备好

    WAITT1:IN

    AL,DX

    TEST

    AL,01H

    JZ

    WAITT1

    ;没准备好,继续查询

    MOV

    AH,01H

    ;输入字符

    INT

    21H

    CMP

    AL,1BH

    ;检查是否是结束字符

    JZ

    ENDING

    INC

    AL

    MOV

    DX,2B8H

    OUT

    DX,AL

    ;将数据传出

    MOV

    DX,2B9H

    WAITTT2:IN

    AL,DX

    ;读状态字,检查接收器是否准备好

    TEST

    AL,02H;

    JZ

    WAITTT2

    MOV

    DX,2B8H

    IN

    AL,DX

    MOV

    AH,02H

    ;输出字符

    MOV

    DL,AL

    INT

    21H

    MOV

    AH,09H;换行

    LEA

    DX,NEXTROW

    INT

    21H

    JMP

    LOP

    ;准备下一次输入

    ENDING:MOV

    AX,4C00H

    INT

    21H

    CODE

    ENDS

    END

    START

    六、

    实验总结

    本次实验的内容是利用8251芯片实现简单的串行通信,CPU通过查询方式与8251进行联络,实验中并没有出现明显问题。代码的缺陷是没有对接收到的数据进行检错就直接拿来使用。

    七、

    实验收获及心得体会

    本次实验是本学期的最后一次实验,通过前三次实验的训练,本次实验的代码写地比较顺利,

    通过四次微机硬件实验,对接口电路有了更深刻的认识,实践了理论课上的知识,对地址有了更准确的理解。掌握了认识、使用一个接口芯片的方法,同时还锻炼了自己编写汇编程序的能力。

    篇3:五年级微机教学计划

    五年级微机教学计划 本文关键词:教学计划,微机,五年级

    五年级微机教学计划 本文简介:微机室教学计划新学期的工作已经开始了。为了更好完成本学期的教育教学工作任务,更好地完成自己的本职工作,发扬优点,弥补不足。特制定本人本学期教学工作计划如下:一、微机室管理方面在本学期,我的主要工作是进行五年级三个班的微机教学,及微机室的管理工作。要保证学生在愉悦的氛围中学习,必须有一个良好的学习环境

    五年级微机教学计划 本文内容:

    微机室教学计划

    新学期的工作已经开始了。为了更好完成本学期的教育教学工作任务,更好地完成自己的本职工作,发扬优点,弥补不足。特制定本人本学期教学工作计划如下:

    一、微机室管理方面

    在本学期,我的主要工作是进行五年级三个班的微机教学,及微机室的管理工作。要保证学生在愉悦的氛围中学习,必须有一个良好的学习环境,所以我将尽职尽责,保持微机室有一个清新、干净的学习环境,保证微机的正常使用,无故障产生。为了做好微机室管理工作,更好地完成教学任务、为教学服务,本学期将重点以发现和培养具有综合素质的学生为辅助小教师,具体分工,连带促进,使每个班在上课时都能分好组,每个组都能相互帮助,形成良好风气,使学生的精神面貌及文化素养得到改观,增强集体观念,培养学生的责任感、义务感,及主人翁意识。在学习时,要求学生严守微机室规章制度,按老师要求进行正确操作,使学生在学习之初便养成良好的习惯,为以后学习打下基础。

    二、教学业务方面

    教学工作是教师的中心工作。在新学期里,本人将认真担负本职工作,认真书写教案、备课,并针对学生实际学习情况有的放矢的开展工作。课堂上,耐心细致地讲解,为使学生能够更好地接受书本知识,并能够在操作上学会正确操作,我将认真研究学生、钻研教材,尽量为学生提供实践的机会,使学生在易学易懂的情境下进行学习,以提高学生学习的积极性。并且以自己在实践中摸索到的教学模式去进行教学。同时,认真研究相关教育理论书籍,与实践相结合,以促进自身的发展。

    三、教材分析

    这套教材是甘肃省教育科学研究所编写的,力求反映信息技术发展迅速的特点,强调实用性和可操作性,注重培养学生获取信息、传输信息、处理信息的能力,使学生在系统学习计算机基础知识、体验信息技术给我们带来的巨大变化的同时,会利用有效的信息解决学习中的实际问题,提高主动学习的兴趣和创新精神,加深对信息社会含义的理解,达到全面提升学生素质的目的。

    1、教材在选编上,以“任务”为驱动,以实例为先导,各册由浅入深,循序渐进,图文并茂,注重以图释义,在写作体例上,注重各部分的相关对应和程度变化,做到教学相长。

    2、在应用的过程中,让学生去体验与人合作、表达交流、尊重他人成果、平等共享等新的理念;树立信息安全与法律意识;培养判断、发展和创造性思维能力;提高发现、分析、解决问题的能力。

    3、以任务驱动,在完成任务的过程中,学会有目的的选择和应用信息技术这一有效的工具,进行各门学科的学习,探索信息技术与其他学科课程整合的方法和途径,培养应用信息技术进行学习和工作的能力。

    4、改变学习方式。在学习的过程中要利用网络有效地获取信息,学会识别信息的真实性,形成自主探索的研究性学习方式。

    四、教学目标

    “中小学信息技术课程指导纲要(试行)”所确定的中小学信息技术课程的主要任务是:培养学生对信息技术的兴趣和意识,让学生了解和掌握信息技术基本知识和技能,了解信息技术的发展及其应用对人类日常生活和科学技术的深刻影响。通过信息技术课程使学生具有获取信息、传输信息、处理信息和应用信息的能力,教育学生正确认识和理解与信息技术相关的文化、伦理和社会等问题,负责任地使用信息技术;培养学生良好的信息素养,把信息技术作为支持终身学习和合作学习的手段,为适应信息时代的学习、工作和生活打下必要的基础。

    五、教学方法与策略

    学生光有兴趣,不一定就能学好这门科学知识,要想使我校学生能系统掌握信息技术知识,计划采取以下措施:

    1、对学生学习信息技术的目的进行引导,端正其学习态度。

    2、对学生进行严格的要求,让他们能充分利用好课堂时间。

    3、对每个班都培养一名信息技术学生代表,由此学生带头对其他学生进行引导和榜样。

    4、加强复习与巩固,培养学生兴趣。

    本学期主要采取教师授课方式、学生自学方式和学生动手操作三种方式进入学习,适当进行一些小竞赛及课堂评价的方式进行教学。其中学生自学和动手是最主要的。

    总之,在新学期的教学工作中,我将一如既往地将自己奉献给教育事业,踏踏实实地工作,为学生能够得到更好的教育,为学生的长大成才,在“基础教育”的这方沃土上,甘为学生作坚实的基石。

    鸡冠山乡中心小学

    2015年3月8日

    • 范文大全
    • 职场知识
    • 精美散文
    • 名著
    • 讲坛
    • 诗歌
    • 礼仪知识