购买

¥ 30.0

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 汇编语言与接口技术

汇编语言与接口技术.ppt

汇编语言与接口技术

精品课件库
2019-06-22 0人阅读 举报 0 0 暂无简介

简介:本文档为《汇编语言与接口技术ppt》,可适用于综合领域

汇编语言与接口技术西北工业大学计算机学院计算机硬件实验室*汇编语言调试环境使用说明利用Editplus和汇编相关软件建立起基于WindowsXP平台的汇编语言集成调试环境对我们学习汇编语言、开发汇编软件将十分方便它将我们学习汇编程序时的编辑、编译、调试等工具集成于一体。一、Editplus的安装和必要设置:、将压缩软件“EDITPLUSRAR”解压到c:EDitPLUS目录下、用鼠标点击图标:安装EDITPLUS到C:EDITPLUS目录下。、用鼠标点击图标:完成注册码的输入。、将压缩软件“MASMRAR”解压到c:EDitPLUS目录下即完成安装。、用鼠标双击桌面上的图标:或选开始程序EDITPLUSEDITPLUS出现如下界面:文件夹下的源程序列表(汇编程序文件的后缀为ASM或SRC)选择用户编程文件夹用户程序编辑区输出窗口文件列表中文件名后缀每个窗口的大小可由鼠标进行缩放输出窗口可由鼠标控制进行缩放其他窗口同样安装Editplus主要菜单的设置第一次安装Editplus必须进行必要的设置首先对“文件”中的“设置与语法”规则进行设置汇编程序文件名的后缀一般为“asm”或“src”为“汇编语言”添加文件类型其次对“文件”中的“模板”进行设置为“汇编语言”添加模板汇编语言模板的文件名设置用户工具用户工具应添加:编译(汇编)工具调试工具帮助文件(可选)请记住:编译(汇编)工具的参数设置请记住:调试工具的参数设置帮助文件根据需要颗可选以上设置完成后关闭Editplus重新启动Editplus,即可以对汇编语言程序进行编辑、编译、调试及运行从源程序列表中打开要编辑、调试的文件主要菜单的使用对源程序的编译和连接对目标程序的调试帮助文件源程序调试软件的使用源程序窗口寄存器窗口命令行窗口源程序调试工具常用命令介绍窗口介绍:源程序调试工具的窗口共有十个:.HelpALTLocalsALTWatchALTSourceALT(★★★★★)SourceALTMemoryALT(★★★)MemoryALTRegisterALT(★★★★★)ALTCommandALT(★★★★★)用鼠标点击Windows菜单可看到这个窗口要打开某个窗口用鼠标选择对应项即可。激活窗口:将鼠标移动到当前窗口并点击鼠标左键此时该窗口边框变亮表明当前窗口被激活。移动窗口:将鼠标放在被激活窗口左边框线或上边框线上并按住鼠标左键移动鼠标则可移动当前窗口的位置。关闭窗口:将鼠标放在被激活窗口的左上方边框“◙”处单击鼠标左键则关闭当前窗口。功能键:F:寄存器窗口的开关F:在源程序方式和汇编方式之间切换F:切换到输出屏幕F:执行到下一个断点或到程序结束(没断点)F:激活各调试窗口F:在光标所在行设置一个临时断点并执行到该行F:执行跟踪命令F:在光标所在行设置或清除一个断点(双击鼠标左键功能相同)F:执行ProgramStep命令PgUp:上卷一页PgDn:下卷一页Home:上卷到文件或命令缓冲区顶部End:下卷到文件或命令缓冲区底部命令行常用命令的使用:T:相当于FP:相当于FG:相当于FDtype:显示内存内容Etype:修改内存内容R寄存器名:显示并修改寄存器内容Q:退出调试工具实验一BCD码的运算一.实验目的熟悉在Ediplus集成环境下编辑、编译、调试编语言程序的全过程。掌握汇编语言程序结构中数据段、堆栈段、代码段定义及内存分配方法。学会源程序调试工具主要命令的使用方法。掌握用组合BCD码表示数据的方法并熟悉其加、减、乘、除运算。二.实验内容多位十进制数加法。两位十进制数乘法。三.实验要求多位十进制数加法:在内存中以DATA和DATA为首址各分配个字节单元分别存入两个位组合BCD码数据(低位在前)将两数相加结果送回到DATA处。两位十进制数乘法:将被乘数和乘数以组合BCD码形式分别存放于DATA和DATA定义的字节单元中经乘法运算乘积存入DATA定义的两个内存单元中。用汇编调试工具查看运算结果进行手工验证并且用汇编调试工具中的相关修改DATA和DATA并重新执行。关于BCD码扩充知识Intel助记符使用术语“ASCII”称作不压缩的BCD码而使用“十进制数”则称为压缩BCD码。不压缩的BCD码不压缩的BCD码由在每一个字节的低四位包含一个十进制数字的字节组成Intel系列处理器提供了调整不压缩值的四种算术操作指令:加法操作后调整AAAAsciiAdjustforAddition减法操作后调整AASAsciiAdjustforSubtraction乘法操作后调整AAMAsciiAdjustforMultiply除法操作后调整AADAsciiAdjustforDivision压缩的BCD码压缩的BCD码由包含两个十进制数字的字节组成:一个在高四位另一个在低四位Intel系列处理器提供了对进行加和运算的压缩BCD数调整指令:加法操作后调整DAADecimalAdjustforAddition减法操作后调整DASDecimalAdjustforSubtraction今天实验所讲的“BCD码的运算”是指压缩BCD码的运算。搞清计算机中压缩BCD码、十六进制码的概念举例:在内存中定义了两个数据分别为data=H、data=H其中data为组合的BCD码data为进制数则有:data的十进制、十六进制为:(十进制)EH(十六进制)data的十进制、十六进制为:(十进制)H(十六进制)多位十进制数加法modelsmalldatadatadbh,h,h,h,hdatadbh,h,h,h,hcodestartupmovsi,offsetdata设指针movdi,offsetdataclc清进位movcx,设加法次数lop:moval,si取第一加数adcal,di取第二加数daa十进制调整movdi,al结果存入指定单元incsi指针加incdilooplop循环exitend流程图:开始清进位设加法次数十进制调整部分和回送指向下单元数ALAL第二加数CX=?结束YN两位十进制数乘法:如*=编程思路:把循环叠加次每叠加一次进行一次BCD码的加法调整为组合的BCD码在计算机中的存放形式为:b必须将组合BCD码H转换成十六进制才可进行循环叠加:H(BCD码)HHH*AH(d)H两位十进制数乘法流程图:开始分离出第一乘数的“个位”分离出第一乘数的“十位”第一乘数的“十位”移到“个位”后再乘合成得到进制的第一乘数BCD码转换成进制数清进位第二乘数做加法次数十进制调整AL与AH内容交换AL与AH内容交换十进制调整CX=?NY存储结果结束一、实验目的掌握循环结构程序的设计、调试。二、实验内容.多字节无符号数加法。.设计一软件延时器并在屏幕上显示软件延时倒计时及正计时过程。试编写一个程序延时大约秒在屏幕上按、、、、……、的顺序显示倒计时的全过程。(可选作)实验三循环结构程序三、实验要求.多字节无符号加法:在DATAS中存放个双字节无符号数用循环结构设计程序通过程序运算把这个双字节无符号数相加其和存入RESULT定义的四个字节单元当中要求用位寄存器完成编程(范例为用寄存器实现)。.设计一软件延时器并在屏幕上显示进制(F)倒计时及正计时及(F)过程。(范例:做一延时约秒的软件延时器在屏幕上按、、…顺序显示软件延时倒计时过程。)对于“学号”为奇数的同学在计算机屏幕上的显示如图所示。对于“学号”为偶数的同学在计算机屏幕上的显示如图所示。可参考实验的编程完成编程。FEDCBAABCDEFFEDCBAABCDEF图图补充知识:关于循环语句的高级语法目前的MASM中引入了一系列的伪指令涉及条件测试、分支和循环语句有了它们汇编语言有了和高级语言一样的结构。关于循环语句的伪指令有:while条件测试表达式指令breakif退出while条件continueendwrepeat指令breakif退出while条件continueuntil条件测试表达式(或untilcxz条件测试表达式)通过今天的实验应顺便掌握子程(过程)序的编写及调用子程序结构:procedurenamePROC距离USES寄存器列表LOCAL局部变量列表··汇编语言指令·RET子程序的返回procedurenameENDP子程序的结束距离:NEAR,FAR,NEAR,NEAR,FAR,FAR。缺省为NEARUSES寄存器列表:由编译器在子程序指令开始前自动安排PUSH这些寄存器的指令并在RET前自动安排POP指令用于保护执行环境。注意在子程序中也可用以后的指令PUSHA、POPA、PUSHAD、POPAD也十分方便。LOCAL局部变量列表:局部变量列表必须放到子程序中所有汇编语句的最前面。常用的局部变量类型有:byte、word、dword等。}扩充知识关于空操作(NOP)指令空操作(NOP)是所有指令中最简单的正如它的名字所暗示的那样:无论在情况下它什么也不操作。NOP不影响标志、寄存器及存储单元它仅仅让指令指针(IP)增加。NOP有许多用途如在你不想重新汇编程序而删除一条指令时可以用H(NOP)来填充相应的单元又如我们本实验所用到的在你要测试程序的最后一条指令后加入一条NOP指令然后在此设置一条断点以次方便用户程序的调试。当然随着编程水平的提高还有其他用途这里不做深入讲解。了解DOS下的系统功能调用系统功能调用:系统功能调用是DOS为方便汇编语言编写而提供的一组约个功能调用的常用子程序它分为设备管理、文件管理和目录管理等几类。DOS规定用软中断指令INTH进入各功能调用子程序的总入口再为每个功能调用规定一个功能号以便进入相应各用子程序的入口。系统功能调用的使用方法:EX:从键盘输入单字符MOVAHH号功能调用INTH将键盘输入字符的ASCII码送到AL。EX:从键盘输入字符串BUFDBDUP(?)LEADXBUFMOVAHAHA号功能调用INTH将键盘输入的字符串写到RAM中去击回车键表示字符串结束。字符数与予留空间的关系为:少补零多丢失。EX:输出单字符MOVDL’M’MOVAHH号功能调用INTH将DL中字符从屏幕上显示出来。EX:输出字符串BUFDB‘Thankyou$’MOVDXOFFSETBUFMOVAHH号功能调用INTH将指定RAM缓冲区中的字符串从屏幕上显示出来。‘$’为字符串结束符。EX:直接控制台输入输出单字符MOVDLFFHDL=FFH时MOVAHH号功能调用INTH将键盘输入字符送到AL中。MOVDL’M’DL≠FFH时MOVAHH号功能调用INTH将DL中字符送到屏幕上显示。…………多字节无符号数加法MODELSMALLDATADATASDWH,H,H,H,HDWH,H,H,H,AAAAHRESULTDD?CODESTARTUPMOVSI,OFFSETDATAS设指针MOVCX,累加次数MOVEAX,清累加器CLC清进位LOP:MOVBX,SI取加数到BXMOVZXEBX,BX将BX扩展成位ADCEAX,EBX带进位加INCSI改指针INCSILOOPLOP循环加MOVRESULT,EAX存结果EXITEND开始清进位将BX扩展为位SI指向下一加数CX=NY存结果结束软件延时器modelsmalldatamydatadbdup(h)numdbh,dh,ah,'$'codestartupmovcx,ah设循环次数lop:movah,h显示功能调用leadx,mydatainthcallnearptrdelay调用延时子程序decnum修改显示数字looplopnopexitnopDelayprocnearusescx延时子程序movbx,ffh设第二时常数Delay:movcx,hloop$自身循环CX次decbx第二时常数减jnzdelay不为零循环retDelayendpend开始字符串显示功能调用延时子程序调用显示数字修改CX=NY结束主程序流程:延时子程序流程:实验四排序程序一.实验目的.学习无符号数比较大小指令.掌握多重循环编程方法.掌握汇编语言编写排序程序的思路和方法。二.实验内容.单字节无符号数排序。.去极值滤波。三.实验要求.单字节无符号数排序:在DATANUM单元存放双字节无符号数表示要排序数据的个数而从DATAS单元开始存放要排序的单字节无符号数据数据个数至少个。程序运行之后这些数据按照由大到小的顺序仍然存放于DATAS单元开始的单元。.去极值滤波:某控制系统为了抗干扰采用去极值滤波法处理采集数据取连续个AD采样值(位双字节低位)要求去掉最大值和最小值将余下个数求平均值用该平均值代表当前时刻系统状态的真值。试编一程序完成这个滤波过程。单字节无符号数排序流程图:开始数据指针SI置前数与后数比较前数≤后数前、后数交换数据指针SI指向下一数YNCX=?NYYBX=?N结束CXBXBX数据个数modelsmalldatadatanumdwdatasdbh,h,h,h,h,h,Fh,h,h,hcodestartupmovbx,datanum取数据的个数到BXdecbxBX为循环次数lop:movcx,bx设内循环次数movsi,设置寻址的偏移量SI=lop:moval,datassi取一个数Acmpal,datassi取下一个数B比较A和Bjbejh若A≤B转到JHxchgal,datassi若A>B交换ABmovdatassi,aljh:incsi偏移量SIlooplopCX≠继续内循环decbxCX=内循环结束外循环次数BXjnzlopBX≠继续外循环exitBX=排序结束end去极值滤波注意与前面程序排序笔筒的地方:此排序为字的排序(位)所以比较为位数据比较指针的移动为两个字节。modelsmalldatadatanumdbdatasdwh,abch,hdwh,h,hcodestartupcallpx排序movsi,offsetdatas掐头去尾送指针movcx,送累加次数clc清进位movax,取首数qh:adcax,si累加incsiincsiloopqhshrax,除movdatas,ax存结果到DATAS首位nopexitnoppxprocnearmovbl,datanum取字长decblmovbh,lop:movcx,bx送比较次数movsi,lop:movax,datassi送前数cmpax,datassi与后数比较jbejh若大于则跳转到jhxchgax,datassi交换movdatassi,axjh:incsiincsilooplopnext:decbl修改比较次数jzfinishjmplopfinish:nop结束retpxendpend实验五分支程序一、实验目的掌握分支程序编程方法复杂分支程序的查表法等。二、实验内容、学生课程成绩分段统计。、键盘及屏幕显示功能调用。三、实验要求、学生课程成绩分段统计:用一个字节表示每个学生的学号另一个字节存放压缩BCD码表示学生的课程成绩(最低分最高分)规定当课程成绩为FH表示作弊当课程成绩为FH表示缺考当学生的学号为FFH时表示学生成绩统计的结束符。学生成绩在内存的存放形式为“学号成绩”每个学生占两个字节从内存SCORE为首址开始存放。要求学生人数不少于个试编程序按~、~、~、……、~、~及作弊、缺考等种情况把学生的课程成绩进行分段统计将统计结果存入以COUNT为首址的个单元中。、试编一程序扫描键盘当B键按下时在屏幕上显示~循环计数S键按下时停止计数再按B键继续计数过程。E键按下时退出程序。、定义三个字节的正数(A、B、C)判断是否能构成三角形如能则显示“Yes!”不能则“No!”。(要构成三角形必须满足两边之和大于第三边即:B+C>A或A+C>B或A+B>C)*定义三组字节的正数(A、B、C)(A、B、C)(A、B、C)请编程序判断这三组数据能否构成三个三角形将三组数据判断的结果用“Yes!”或“No!”显示出来用来表示能否构成三角形。、用DEBUG调试程序预置数据和查看程序运行结果以验证程序正确性。分支程序常由比较指令(CMP)和条件转移指令共同实现。条件转移分带符号转移和不带符号转移。转移指令的记忆技巧:字母含义J转移G大于(带符号比较)L小于(带符号比较)A高于(无符号比较)B低于(无符号比较)E等于N不应注意的问题:条件转移的跳转范围为:~。选择合适的转移指令否则不能转移到一定的程序分支特别要注意区分有符号数和无符号数的使用条件。要为每个分支安排的出口否则导致程序运行混乱。在分支较多时编程时各个分支的先后次序应与流程图一致以减少编程出错的机会并便于检查。在调试分支程序时要假设各种可能的输入数据并沿每个分支走一边以检查程序的正确性。学生课程成绩分段统计开始设置学号、成绩指针取学号取成绩是结束标志?取十分位并将十分值扩展为位送DI对DI所指统计区段统计值加是作弊?是缺考?修改指针CX=?作弊统计区段统计值加缺考统计区段统计值加结束YYYYNNNNmodelsmalldatascoredb,h,,h,,h,,h,,h,,h,,hdb,h,,h,h,,h,fh,h,fh,ffhcountdbdup()codestartupmovcx,送统计上限movsi,SCORE统计指针statistic:moval,scoresi取学号cmpal,ffh判是否为结束jestaend转统计结束movbl,scoresi取成绩cmpbl,fh是否作弊jefake是转作弊处理cmpbl,fh是否缺考jemiss是转缺考处理shrbl,取十分位movzxdi,bl将十分值扩展为位送DIinccountdi相应区段统计值加down:incsi改指针incsiloopstatistic循环staend:nop结束exitfake:inccount作弊处理jmpdownmiss:inccount缺考处理jmpdownend键盘及屏幕显示功能调用开始显示提示信息置处理指针为“停止”调延时、键盘扫描程序有键动?转处理指针处B键?S键?E键?转处理指针处结束置处理指针为“计数”置处理指针为“停止”NYYYYNNN处理指针为“计数”处理指针为“停止”计数显示延时、键盘扫描程序子程序定义CX=NY监测键动有键动?做键动标志bx=NYmodelsmalldataMessdb'pressbbuttoncount',dh,ahmessdb'presssbuttonstop',dh,ahMessdb'pressebuttonexit',dh,ah,'$'countdbh,h,h,h,h,h,dh,'$'codestartupmovah,h显示提示信息movdx,offsetmessinthleasi,stop设处理指针scan:callnearptrdelay调延时、键扫程序orbx,bx判有无键动jnzscan有键动转键处理jmpsi无键动转当前处理程序scan:cmpal,'b‘键处理程序jebproccmpal,'s'jesproccmpal,'e'jeeproccalldelayjmpsibproc:leasi,countB键处理jmpscansproc:leasi,stopS键处理jmpscaneproc:nopE键处理nopexitcount:inccount修改显示数字moval,ah比较超限cmpal,countjadown若不超限调显示movcount,h超限设启始值down:movah,h显示功能调用leadx,countinthjmpscanstop:jmpscannopDelayprocnearusescx延时子程序movbx,h设第二时常数delay:movcx,hloop$自身循环CX次movdl,ffh监测键动movah,hinthjnzkeyret若有键动延时终止转键处理decbx第二时常数减jnzdelay不为零循环jmpdelayretkeyret:movbx,做键动标志delayret:retDelayendpend硬件实验部分本部分共进行次实验实验内容如下:实验六并行接口技术实验实验七定时计数器实验实验九AD转换实验(下面根据实验台实物介绍实验台)特别说明:为了方便实验实验台设计时已将除片选信号线(CS)外的所有相关总线全部连好并在每一个实验电路附近予留有实验内容要求的连线插孔。实验时只要将相应插孔用单股导线对应相连即可组成完整的实验电路。在给出的实验电路图中线路所带小圆圈即表示连线插孔。硬件实验注意事项:在实验台确保断电的条件下方可连接电路线路连接完成、检查确认没有错误后再开通实验台电源用单股导线连接电路时要将单股导线线头整直并确认线头没有断裂以防单股导线端头断裂在插孔内影响下次试验的进行实验完成后首先关断实验台电源再用手捏住导线的根部一根一根拔出并把导线整好放入实验箱右边的线盒内并盖好实验箱才可离开。实验报告必须画出原理框图并概述其工作原理。实验六并行接口技术实验一.实验目的掌握A并行接口的基本使用方法。理解数码管扫描显示原理学习数码管扫描显示方法。二.实验内容用A作为并行接口从A的A口的PAPA输入四个开关量B口通过HC与数码管的段位相连(a、b、c、d、e、f、g、dp分别对应B口的PB、PB、PB、PB、PB、PB、PB、PB)。试编写一个程序从A的A口读入将这四个开关量的值并根据其值的大小通过A的B口连接的数码管显示出相应的十六进制值即当A口输入为“xxxx”时B口输出所数码管显示“”······,当A口输入为“xxxx”时B口输出所数码管显示“F”。设A的A口B口均为输出方式A口通过ULN驱动器接数码管的位选端B口通过HC与数码管的段位相连(a、b、c、d、e、f、g、dp分别对应B口的PB、PB、PB、PB、PB、PB、PB、PB)。试编一动态扫描程序让个数码管“同时”点亮显示每位学生自己的学号。(参考程序显示“”)参考程序编写一个倒计时程序(延时约秒-秒)的软件延时器用两位LED动态显示出F、E、…倒计时过程。三.实验电路及设计实验电路图实验连线()逻辑电平开关输出孔K~K对应连接到A的PA~PA()A的PB~PB对应连接到数码管的位选端JM~JM()数据总线D、D、D、D、D、D、D、D对应连接到数码管的字划端a、b、c、d、e、f、g、dp()A的片选端CS连到译码控制单元的EHEHA的端口地址PA口:EHPB口:EHPC口:EH控制寄存器:EH数码管编码表“”FH“”H“”BH“”FH“”H“”DH“”DH“”H“”FH“”FH“A”H“B”CH“C”H“D”EH“E”H“F”H有关问题的说明数码管(共阴):ABCDEFGDPABCDEFGDP共阴地KK不闭合数码管就点不亮数字DPGFEDCBA字型码0001111113FH10000011006H201011011BH……多个数码管扫描显示:多个数码管扫描显示:限流电阻锁存器JM、JM、JM谁为‘1’谁连接的数码管就显示锁存器当前锁存的值所谓扫描显示是:对N个数码管:1给锁存器送第1个数码管显示内容而后第1个数码管公共端接低延时2给锁存器送第2个数码管显示内容而后第2个数码管公共端接低延时…N给锁存器送第N个数码管显示内容而后第N个数码管公共端接低延时   第N步后再从1开始周而复始。那么JM、JM、JM是互斥的了!连接数据总线D~D驱动器实验电路示意图B口PAPAPAPASKSKSKSK开关HC锁存器限流电阻DbusD…DSMGLTCSPBPBKCPU开始初始化点亮一位数码管读键盘有键按下否?读A的A口数据屏蔽高位查表得到相应的字型码通过A的B口输出字型码到LED显示结束YNmodelsmallCsequEh片选地址CSpctlequh控制字A口入,B口出datatabledbfh,h,bh,fh,h,,,,字型表dbdh,dh,h,fh,fh,h,,,,,Adbch,h,eh,h,hB,C,D,E,Fcodestartupmovdx,cs初始化movax,pctloutdx,axlop:movah,h键入任意结束程序的执行movdl,ffhinthjnzscanendmovdx,cs读开关inal,dxandal,fhmovbx,offsettable读字型码xlatmovdx,csB口输出outdx,aljmplop循环扫描scanend:exitend实验源程序实验限流电阻ULN驱动器DbusD…DCSCSHC锁存器ABCDEFGDPA口B口PBPBKKKKKK开始初始化8255查表取显示数字字型码显示字型码送锁存器(输出)扫描位数≥6?调延时读键盘有键动?结束NYYN延时子程序流程(略)取对应数码管字位、并输出CL1(下一扫描位置)modelsmallCsequEh片选地址CSpctlequh控制字A口输出B口输出datatabledbfh,h,bh,fh,h,,,,字型表dbdh,dh,h,fh,fh,,,,codestartupmovdx,cs发控制字moval,pctloutdx,almovcl,设扫描位置lop:moval,cl取显示数字movbx,offsettable读字型码xlatmovdx,cs输出字型码outdx,almoval,hIncclroral,clmovdx,cs输出字位outdx,alcmpcl,jbedown若显示位置大于返回启始位置movcl,down:calldelaymovah,判有键动跳出循环movdl,ffhinthjnzscanendjmplop循环扫描scanend:nopexitnopdelayprocnear延时子程序pushcxmovbx,hdelay:movcx,hloop$decbxjnzdelaypopcxretdelayendpend实验七定时计数器实验一.实验目的掌握定时计数器的基本使用方法。了解定时计数器利用级连扩大计数范围的方法。了解多IO芯片协同工作的原理和方法。二.实验内容将定时器设置为方式(分频)定时器设置为方式(方波)定时器的CLK端接M或M时钟定时器的输出脉冲作为定时器的时钟输入。将定时器的输出脉冲接在一个LED灯上或风鸣器上。编程使工作观察灯的状态或风鸣器声响。用做秒信号源用A控制交通灯的红绿变化完成一交通灯控制系统使每秒切换一次通行方向。三.实验电路及设计实验电路图“实验内容”实验连线()的GATE、GATE接高电平()T的CLK接M或M时钟孔()T的CLK接T的OUT()的片选端CS连到译码控制单元的EHEH()T的OUT接LED灯。“实验内容”实验连线以下连线假设A的A口为输入方式、B口为输出方式A的PA连接T的OUTA的B口控制交通灯的八只LED灯。()连线同“实验内容”的()~()()T的OUT接A的PA孔()A的PB~PB对应连接到dp、g、f、e、d、c、b、a它们对应交通灯的Wr、Er、Wg、Eg、Nr、Sr、Ng、Sg灯()交通灯八只LED发光管的公共控制端JTD孔接高电平()A的片选端CS连到译码控制单元的CS(EH)。和A的端口地址的端口地址(CS):定时器分频系数寄存器:EH定时器分频系数寄存器:EH控制寄存器:EH。A的端口地址(CS):PA口:EHPB口:EHPC口:EH控制寄存器:EH。实验7开始初始化T初始化T1装T低字节计数初值结束装T高字节计数初值装T1低字节计数初值装T1高字节计数初值csCS(EHEH)clkMoutCLKoutBJ或DLgateK,令k=""gateK,令k=""MODELSMALLCSEQUEHTCTLEQUB对T两次读写,先低后高。T为方式(分频)TCTLEQUB对T两次读写,先低后高。T为方式(方波)DATATDATA DB FFH,HTDATA DB FFH,CODE STARTUPMOVDX,CS初始化TMOVAL,TCTLOUTDX,ALMOVDX,CS给T低字节装计数初值MOVAL,TDATAOUTDX,ALMOVAL,TDATA给T高字节装计数初值OUTDX,ALMOVDX,CS初始化TMOVAL,TCTLOUTDX,ALMOVDX,CSMOVAL,TDATA给T低字节装计数初值OUTDX,ALMOVAL,TDATA给T高字节装计数初值OUTDX,ALEXITEND 开始T初始化给T装初值T1初始化给T1装初值初始化为A口入、B口出B口输出方向初值读PA、测试PAPA=读PA、测试PAPA=11控制换向B口输出方向值检查键盘有键盘动?结束YYYNNN实验csCS:EHEHclkMout>clkout>PAgatekgatekJTDVCSCS:EHEH(芯片的片选信号即片选地址)(PBPB)(RE,RS,RW,RN,GE,GS,GW,GN)MODELSMALLCSEQUEH计数器寄存器地址,CSTCTLEQUB控制字:选择计数器,读写双字节,先低后高,方式,十进制计数TCTLEQUB控制字:选择计数器,读写双字节,先低后高,方式,十进制计数CSEQUEH的A口地址,CSPCTLEQUH的方式控制字A,B口均工作在方式,A口输入,B口输出DATATDATADBH,H计数器的计数值为HTDATADBH,H计数器的计数值为Hdirdatadbb交通灯方向初值,表明灯熄灭,表明灯点亮高半字节为红,低半字节为绿顺序为东南西北D东红,D南红,D西红,D北红D东绿,D南绿,D西绿,D北绿CODESTARTUPMOVDX,CS写控制字(控制寄存器地址EH,即T)MOVAL,TCTLOUTDX,ALMOVDX,CS写计数器的计数值MOVAL,TDATA写低字节OUTDX,ALMOVAL,TDATA写高字节OUTDX,ALMOVDX,CS写控制字(控制寄存器地址EH即T)MOVAL,TCTLOUTDX,ALMOVDX,CS写计数器的计数值MOVAL,TDATA写低字节OUTDX,ALMOVAL,TDATA写高字节OUTDX,ALmovdx,CS初始化A入moval,pctloutdx,almovdx,cS设方向初值moval,dirdataoutdx,alhighlevel:若A口的PA为“”则转highlevel继续检测等待直到高电平结束或者说是扫描OUT脉冲上升沿判定时器输出的高电平周期movdx,CSinal,dxtestal,jzlowlevel若芯片的PA为“”说明OUT输出的为高电平周期若芯片的PA为“”说明OUT输出为低电平周期movah,bhOb功能调用看有无键动。有键动则AL=FFH无键动则AL=Hinth目的:任意敲一键程序结束。oral,aljnzdirendjmphighlevellowlevel:若芯片的PA为“”则转lowlevel继续检测等待直到低电平结束判定时器输出的低电平周期movdx,CSinal,dxtestal,jnzdirctlmovah,bhOb功能调用看有无键动。有键动则AL=FFH无键动则AL=Hinth目的:任意敲一键程序结束。oral,aljnzdirendjmplowleveldirctl:测量出A口的PA一个完整的周期moval,dirdata交通灯方向控制单元数据取反即改变方向notalmovdirdata,almovdx,cs送出新的红绿灯方向outdx,almovah,bhOb功能调用看有无键动。有键动则AL=FFH无键动则AL=Hinth目的:任意敲一键程序结束。oral,aljnzdirendjmphighleveldirend:EXITEND实验九AD转换实验一.实验目的学习模数转换器使用方法理解模数转换原理。二.实验内容.给AD转换器输入一可调节的电压信号假设该输入信号为一水塔的水位高度信号请结合应用A接口芯片编程完成以下功能:当水位低于PL时开报警、并打开水泵(点亮一指示灯)水位在PL~PH之间时关闭报警水位高于PH时开报警、并关闭水泵(指示灯熄灭)。设PH=BH(约V)PL=H(约V)。.用AD转换器对电压信号Vdc连续采集次求出均值放入指定单元并把采集均值转换为电压通过在数码管上显示。三.实验电路及设计ADC引脚图实验电路示意图PAPAPAPAPAPAPAPAADCININININININININ水塔水泵开关报警开关CSADOEADSPL=h约VPH=Bh约V入口出口DbusD…DCPU“实验内容”实验连线  以下连线假设A的A口为输出方式  ()AD转换单元的ADS连接译码控制单元的ADS(EH)  ()AD转换单元的ADOE连接译码控制单元的ADOE(EH)  ()AD转换器的IN输入端连接到直流电压单元的Vdc孔。直流电压单元的旋钮  顺时针旋转Vdc输出电压增大逆时针旋转输出电压减小  ()A的片选端CS连到译码控制单元的CS(EHEH)  ()A的PA连接到逻辑电平指示单元任意LED上表示电机  ()A的PA连接到逻辑电平指示单元任意LED上表示报警。“实验内容”实验连线   以下连线假设A的A口、B口均为输出方式A的B口连接数码管的字划端A的A口连接数码管的位选端。()连线同“实验内容”的()~()()A的PB~PB对应连接到数码管的字划端DP、G、F、E、D、C、B、A()A的PA~PA对应连接到数码管的位选端SM~SM。 ADC和A的端口地址ADC地址:通道选择及启动转换:ADS(EH)读结果:ADOE(EH) A的端口地址(CS):   PA口:EHPB口:EHPC口:EH控制寄存器:EH。关于AD基本技术指标:ADC是位逐次逼近型AD转换器。它由一个路模拟开关、一个地址锁存译码器、一个AD转换器和一个三态输出锁存器组成。分辨率为位。最大不可调误差﹤±LSB。单一V供电模拟输入范围V。具有锁存控制的路模拟开关。可锁存三态输出输出与TTL兼容。功耗为mW。不须进行零点和满度调整转换速度取决于芯片的时钟频率时钟范围为:KHz当CLK=KHz时转换速度为uS实验91流程图开始初始化读键盘有键按下?设置采集次数、存储指针调采集程序采集数据求和、并求均值采集均值﹤PL?采集均值﹤PH?结束YNYYNN开泵、开报警开泵、关报警关泵、开报警调采集程序:子程定义启动A/D等待转换完成读转换结果保存转换结果子程结束MODELSMALLpequEH片选地址pctlequH控制字A口输出ADSequEHAD片选地址ADOEEQUEHAD输出允许PHequBH假设的水塔水位上限PLequH假设的水塔水位下限BJLEDKEQUB水位低于下限的状态字:PA=报警PA=开水泵BJGLEDKEQUB水位高于下限低于上限的状态字:PA=不报警PA=或开或关水泵BJKLEDGEQUB水位高于上限的状态字:PA=报警PA=关水泵dataVADDBdup()RESULTDBZTDBZT单元为FF是水位由下限开始上升标志ZT单元为是水位由上限开始下降标志codestartupmovdx,p写控制字moval,pctloutdx,alstart:movah,bhOb功能调用看有无键动。有键动则AL=FFH无键动则AL=Hinth目的:任意敲一键程序结束。oral,alJNZscanendmovdi,offsetVAD取AD采样值存储单元首地址movcx,cv:calladcv调采集程序loopcvmovdi,offsetVAD求四次采样的算术平均值movcx,MOVAX,clcqzhzh:MOVBL,DIMOVBh,ADCAX,BXincdiloopqzhzhMOVCL,SHRAX,CLMOVRESULT,ALCMPAL,PLJBONBEEPLEDCMPAL,PHJBOFFBEEPONLEDJMPONBEEPOFFLEDONBEEPLED:movdx,pmoval,BJLEDK水位低于下限的状态字:PA=报警PA=开水泵outdx,alMOVZT,FFHZT单元为FF是水位由下限开始上升标志jmpstartOFFBEEPONLED:movdx,pmoval,BJGLEDK水位高于下限低于上限的状态字PA=不报警,注意:如果水位侍从底位上升时,PA=,水泵继续开反之:如果水位是从上部下降时PA=,水泵应关闭ANDAL,ZToutdx,aljmpstartONBEEPOFFLED:movdx,pmoval,BJKLEDG水位高于上限的状态字PA=报警PA=关水泵outdx,alMOVZT,ZT单元为是水位由上限开始下降标志jmpstartscanend:nopexitnopadcvprocnearusesaxcxdxmovdx,ADS启动AD转换,AL的值无意义outdx,ALmovcx,h延时目的是等待AD转换完成loop$inAL,dx读AD采样值并存储movdi,ALincdiretadcvendpend*

VIP尊享8折文档

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/79

汇编语言与接口技术

¥30.0

会员价¥24.0

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利