首页 > 编程知识 正文

汇编语言程序设计实验总结,单片机实验汇编语言程序设计

时间:2023-05-05 23:20:59 阅读:116125 作者:765

一、实验目的

掌握汇编编程规范,熟悉编程环境。

二、实验内容

1 .编程:依次向存储器0:200-0:23F传输数据0-63(3FH )。

2 .编程:生成代码段代码,通过推送指令将a段的word数据按相反顺序存储在b段中。三、实验步骤算法及关键代码

第一题:

1 .实验思路和算法

思路:

实验要求是将0:200-0:23F的内容依次传输到0-63,但经过分析,主题不需要数据倒置或进行其他操作,可以通过直接循环赋值的方法实现。

相关设置和算法:

将DS设定为段地址0,在BX中保存偏移地址。 由于起始地址为200,因此初始化BX为200。

CX被设置为循环计数器,并且每个周期中BX和DX被加1,从而从存储单元的数目可以看出,需要分配64次,使得CX=64;

每次设置DX存储时,都必须分配给存储单元的特定数字。

初始化代码:

MOV AX,0MOV DS,AXMOV BX,200HMOV CX,64MOV DX,0环路代码: S:MOV [BX],dxincdxincbxloops 3358 www.Sina.com /

assume cs 3360 codescodessegmentstart : movax,0 MOV DS,AX MOV BX,200H MOV CX,64 MOV DX,0 S:MOV [BX],dxincdxincbxloops

起始寄存器的内容和指令地址:

循环前

后面的第二个问题:

1 .实验思路和算法

思路:

正题上需要用堆栈。 必须先入后出完成倒排,同时访问已经设置的两个数据区域。 最初的构想其实是设置新的堆栈,把a段的内容放入堆栈,然后把所有的内容堆栈到b段。 但是,实际上从一开始就认为将b段设定在堆栈上,可以减少堆栈和值的操作。

相关设置和算法:

将b地址设定为堆栈的段地址,保存在SS寄存器中; 因为数据是字体数据,所以将堆栈底部的下一个存储单元地址、即偏移地址设为0010H,存储到SP寄存器中;

将DS设置为段a地址,BX记录偏移地址并初始化为0;

因为CX需要被设置为循环计数器并传输8个数据,所以CX被初始化为8;

设置DX用于临时保存数据区检索的数据

对于循环,检索数据并直接堆栈,然后添加一两次BX (因为数据是字体)。

2.实验代码

assume cs : codecodesegmentasegmentdw 1、2、3、4、5、6、7、8 aendsbsegmentdw 0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0、0 0 MOV CX,8 MOV DX,0 S:MOV DX,[BX] PUSH DX INC BX INC BX LOOP S MOV AH,4chint21hcodeendsendstart333

起始寄存器的内容和指令地址:

循环前:

a部分:

第b段:

寄存器:

循环后:

3.实验结果

在这次实验中,在这段时间的学习过程中重点练习了重要的循环和堆栈知识,但总体主题比较容易实现。 在这次实验中,实际上获得了很多对实验环境IDE的熟悉和Debug语法的学习,是之后的学习和实验中不可缺少的技能点。

实验过程中,由于编程和构思问题暂时难以居住,虽然主题难度其实并不高,但自己最近的学习得到了一定的肯定; 但是,在Debug上操作命令确实花了时间。 特别是在需要发出决定存储器地址的指令的情况下还不熟练。 我希望你今后更加努力。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。