美文网首页
实验一 汇编语言与并行接口实验

实验一 汇编语言与并行接口实验

作者: Redcarp | 来源:发表于2020-07-04 11:37 被阅读0次

    ⚠本篇文章参考网址1:https://wenku.baidu.com/view/e04ce53c42323968011ca300a6c30c225901f099.html
    ⚠本篇文章参考网址2:
    https://blog.csdn.net/qq_43207916/article/details/101175328

    目测应该是个17级的大佬?
    ⚠感谢我可爱的室友们在实验过程中对我的帮助 + 一部分学习资料的提供
    ⚠感谢ZYLXGG
    ⚠感谢大佬们在实验课程中的扶贫工作

    害,不赞同你们单纯的抄袭行为嗷,希望能帮你们解决一些实际问题,但不希望你们的实验报告完全照搬嗷,还是要看懂原理,不然考试咋搞啊,这也是我头秃的问题,唉😔(补一句,大数据不学这个😭...//恶龙咆哮!)

    关于这些代码,其实可以把网址存在txt文本里,然后就可找到这个专题啦,接着搬搬代码就可以啦(啊,我什么都没说,要自己肝代码!💪),也不用每次都提前搞代码,或者手机看网页,手动抄代码,电脑大屏 + ctrl c/v 香香甜甜😏!

    废物的形状.jpg

    一、实验题目:

    1.8255输入、输出实验。(参考书上214页基本输入输出应用举例)
    2.利用8255设计跑马灯(软延时)。
    3.带有控制键的跑马灯。(参考实验一中的跑马灯 [实验1-2] )

    二、实验目的:

    熟悉汇编语言编程环境,掌握8255芯片工作原理、电路设计及利用汇编语言编写接口软件。

    三、实验电路图

    I/O译码地址选择接口:

    8255芯片:Y1作为片选地址
    Y1:288H-28FH
    288H -> A口
    289H -> B口
    28AH -> C口
    28BH -> 控制口
    实验中我们选择:B口作为输入,C口作为输出

    按照电路图红色的地方接线就可,其余线不用接,注意接线的对应关系,尤其是8根线的那2个✊

    实验1电路图.png
    实验1实物图.jpg

    四、软件设计程序流程图

    实验1-1:8255输入、输出实验

    实验1-1程序流程图.jpg

    实验1-2:利用8255设计跑马灯(软延时)

    实验1-2程序流程图.jpg

    实验1-3:带有控制键的跑马灯

    实验1-3程序流程图.jpg

    五、实验软件代码(加注释)

    实验1-1:8255输入、输出实验(参考书上214页基本输入输出应用举例)

    CODE     SEGMENT;段定义语句
    ASSUME   CS:CODE;段寄存器分配
             MOV DX, 28BH;
             MOV AL, 10000010B;根据书上207页图6.10
             OUT DX, AL;写端口用OUT指令,将控制字写入控制口
    IN_PORTA:MOV DX, 289H
             IN  AL, DX;读端口用IN指令,读B口(289H,也即逻辑电平开关)入AL
             MOV DX, 28AH
             OUT DX, AL;写端口用OUT指令,将AL中的信息写入C口(DX)
             JMP IN_PORTA;无条件转移语句,转移回IN_PORTA循环
    CODE     ENDS;代码段定义语句
             END START
    

    实验1-2:利用8255设计跑马灯(软延时)

    CODE SEGMENT
    ASSUME CS:CODE;段寄存器分配
    START:  MOV DX, 28BH;控制字寄存器
            MOV AL, 10000010B;控制字寄存器端口,根据书上207页图6.10
            OUT DX, AL;写端口用OUT指令,将控制字写入控制口
            MOV DX, 28AH;C口输出
            MOV AL, 00000001B;跑马灯从L0开始亮(AL设置每次循环灯从何处亮)
    LEFT:   OUT DX, AL;写端口用OUT指令,将AL中的信息写入C口(DX)
            ROL AL, 1;循环左移一位
            MOV BX, 20H;给BX赋初值20H 
    DELAY:  MOV CX, 65535;双层循环,用来延时,否则跑马灯跑太快,无法观察(滑稽脸)
    LOOP1:  DEC CX;CX=CX-1,CX自减1
            CMP CX,0;CX-0是否为0?
            JNZ LOOP1;否,继续循环LOOP1
            DEC BX;BX=BX-1,BX自减1
            JNZ DELAY;否(若 BX ≠ 0),继续循环DELAY
            JMP LEFT;无条件转移语句,循环检测该程序
    CODE ENDS
            END START
    

    实验1-3:带有控制键的跑马灯(参考本实验中的 8255输入、输出 [实验1-1] 和 本实验中的 跑马灯 [实验1-2] )

    CODE SEGMENT;段定义语句
    ASSUME CS:CODE;段寄存器分配
    START:  MOV DX,28BH
            MOV AL,10000010B;写入控制字,A口输出,工作方式为方式0,C口输出,B口输入,工作方式为方式0
            OUT DX,AL;将控制字送入控制口
            MOV AH,00000001B;跑马灯从L0开始亮(AH设置每次循环灯从何处亮)
    NEXT:   MOV DX,289H;从B口输入
            IN AL,DX;读端口用IN指令,读B口(289H,也即逻辑电平开关)入AL
            CMP AL,00000010B;测试开关K1状态,AL中的值  减去  02H(00000010B)
            JNZ NEXT;否(若K1不为高电平),跳到NEXT,实现对跑马灯暂停的控制
            MOV AL,AH;AH(跑马灯从L0开始亮)将信息给AL
            MOV DX,28AH;指向C口
            OUT DX,AL;从C口输出AL中的值(跑马灯此时的值)
            ROL AL,1;AL中的值左移一位
            MOV AH,AL;将当前AL的值保存于AH中
            MOV BX,500H;将500H存入BX中,双层循环延时
    DELAY1: MOV CX,12345;将12345存入CX
    DELAY2: LOOP DELAY2;循环DELAY2,每循环一次,CX自减1,直至CX = 0
            DEC BX;BX=BX-1,BX自减1
            JNZ DELAY1;若BX ≠ 0,则跳至DELAY1
            JMP NEXT;无条件转移语句,跳至NEXT
    CODE ENDS
            END START
    

    六、实验结果

    1. 实验1-1结果:利用8255芯片完成了输入、输出实验。
    2. 实验1-2结果:利用8255芯片完成了软延时的跑马灯运行。
    3. 实验1-3结果:利用8255芯片完成了带有控制键的跑马灯。

    七、实验小结

    实验从最初的一头雾水到最后的豁然开朗(感觉并没有),这次的实验课将理论和实践结合在了一起,嗯,这是一次不错的体验(真的吗???😭)!

    相关文章

      网友评论

          本文标题:实验一 汇编语言与并行接口实验

          本文链接:https://www.haomeiwen.com/subject/myspzhtx.html