《微机原理及接口技术》全套PPT电子课件教案-作业分析.ppt_第1页
《微机原理及接口技术》全套PPT电子课件教案-作业分析.ppt_第2页
《微机原理及接口技术》全套PPT电子课件教案-作业分析.ppt_第3页
《微机原理及接口技术》全套PPT电子课件教案-作业分析.ppt_第4页
《微机原理及接口技术》全套PPT电子课件教案-作业分析.ppt_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

p 528题3 1abl00h1000h10hbh20h2000h01hcl00hch10hdl01hdh10hal10h注意 十六进制数后缀加h 1 已知 ds 2000h bx 100h si 2h 20100h单元起依次存放数为2ah 4ch b7h 65h 试说明下列各条指令执行后ax寄存器内容 1 movax bx 2 movax bx 3 movax bx si 2 ax 2ah 3 ax b7h注意 1 十六位数据传送 3 ax b765h注意 低八位在前 高八位在后 100h 4c2ah 65b7h 2 ax 20100h 3 ax 20102h注意 不是单元地址送ax 是单元内容送ax 2 设sp 2400h ax 4000h bx 3600h 试问 1 执行pushax后 sp 2 再执行pushbx及popax后 sp ax bx 1 sp 2398h十进制与十六进制 2 push或pop执行后 sp变化 3 设ax 4235h bx 06fah cx 0143h dx 3105h cf 1 下列各指令分别执行后结果是什么 cf zf of是什么值 1 addal dh 2 incbl 2 bl 0fah增量后bl 0fbh cf 1 zf 0 of 0 注意 inc指令不影响cf 原cf不变 作业 有一字符串 每个元素一个字节 长度为10 存放在buffer为起始地址的单元内 检查该字符串中有无 字符 若有则用空格符将其替换 同时将al置1 若无将al置0 试用字符串操作等指令编程完成上述功能 1 di为目的字符串指针2 al放关键字3 修改di repne不相等 结果为非零则重复常与scas连用 cx放数据长度 scasb搜索串指令 1 指针放si di leadi bufferoffsetbuffer al decdi di 2 movdi buffer 3 关键字放bl 4 moval 6 空格的ascii码是20h 而不是00h 7 scasb已修改了di 8 movdi 20h cmpal 24h 5 testax 24h leadi buffermovcx 10moval repnescasbjzfoundmovai 0jmpdonefound decdimovdi 20hmoval 1done hlt lea offset al mov di 20h scasb已修改了di leadi buffermovcx 10moval movbl 0again scasbjnznextdecdimov di 20hincdimovbl 1next deccxjnzagaindone moval blhlt scasb已修改了di 搜索 初始化 不是 结束控制 1 有符号定义语句 org200habufdb1 2 abcd bbufdw1030h 0lenequ abuf求len 203h单元的内容 206h单元的内容 len 6 9 206h 203h b len 10 203h 42h 206h 30h 1 若从0200h单元开始有100个数 编一个程序检查这些数 正数保持不变 负数都取补后送回 1 datasegmentmovoffsetbuffer0200hbufferdwx1 x2 x100dataends 去掉 org0200h 2 数据段 bufferdbx1 x2 x100程序中 movax bx 数据类型 字节与字 前后要一致 1 nameemnumbersbegin countequ100movbuffer 0200hleabx bufferagain movax bx orax axjsnegdecbxdecbxdeccxjmpagainneg not bx add bx 1decbxdecbxdeccxendbegin 用数据段定义 代码段不全段寄存器 循环计数器初值cx inc neg为指令操作码 不能用作标号 loopagain loopagain jmpdone done hlt 2 datasegmentorg0200hdata firstdbd1 d2 d100countequ data firstdataendsstacksegmentparastack stack db64dup topequ stackstackendscodesegmentassumecs code ds data ss stackstartprocfarbegin pushdsmovax 0pushaxmovax datamovds axmovax stackmovss axmovax topmovsp ax 定义字节数据 movax countleabx data firstagain or bx bx jnsnextmovax bx notaxaddax 1mov bx axnext incbxloopagainretstartendpcodeendsendbegin cx循环次数 没有这指令 数据定义是字节数据 应用al datasegmentorg200hbufferdwx1 x2 x100countequ bufferdataendsstacksegmentparastack stack db64dup topequ stackstackends codesegmentassumecs code ds data ss stackstartprocfarbegin pushdsmovax 0pushaxmovax datamovds axmovax stackmovss axmovax topmovsp ax movcx countshrcxleabx bufferagain test bx 8000hjznextnegwordptr bx next incbxincbxloopagainretstartendpcodeendsendbegin 2 若自0500h单元开始有1000个无符号数 把它们的最大值找出来 放在2000h单元中 无符号数比较 改为ja org0500h org2000h 1 cmpax bx jgenext 2 datasegmentbufferdwx1 x2 x100countequ buffermaxdw dataends 1 stacksegmentstackdb64dup stackendscodesegmentassumecs codestart movbx 0500hmovcx 3e8hmovax bx incbxdeccxagain cmpax bx jgenextmovax bx next incbxloopagainmovdi 2000hmov di axint03hcodeendsendstart 没有数据段 送ax说明是字数据 无符号数比较用ja 地址指针只加1说明是字节数据 代码段不全 2 datasegmentbufferdwx1 x2 x1000maxdw dataendscodesegmentassumecs code ds datastartprocfarbegin movcx 1000leabx buffermovax bx incbxincbxshrcxdeccxagain cmpax bx jgenextmov bx axnext incbxincbxloopagainretcodeendsendbegin org500h org2000h 返回地址处理设置ds值 movmax ax 无符号数jae jnc namesearch maxdatasegmentorg500hbufferdwx1 x2 x1000countequ bufferorg2000hmaxdw dataendsstacksegmentparastack stack db64dup topequ stackstackends codesegmentassumecs code ds data ss stackstartprocfarbegin pushdsmovax 0pushaxmovax datamovds axmovax stackmovss axmovax topmovsp ax movcx countleabx buffermovax bx incbxincbxshrcxdeccxagain cmpax bx janextmovax bx next incbxincbxloopagainmovmax axretstartendpcodeendsendbegin 错误的指令movdl 2000hor bx bx 1 cmp di di 2 mov2000h bx leabl buffer 1 若自string单元开始存放一个字符串 以字符 结尾 编一个程序 1 统计这个字符串的长度 不包括 字符 2 把字符串的长度放在string单元 把整个字符串往下移两个存储单元 1 8位与16位movcx dladddi dl 2 没有的指令mov di bx mov di 2 di mov di 1 di 1 leadi stringmovdl 0moval cragain scasbjedoneincdljmpagaindone leabx llmov bx dlmovcx dla1 decdimoval di mov di 2 alloopa1leadi stringmov di bx cx 16位 dl 8位 没有这样的指令 ll单元紧跟字符串 下移两个单元后 ll单元内容已丢失 1 datasegmentstringdb abcd lldb crequ dataends dx dw leadi stringmovdl 0moval 0dhmovcx count 10again scasbjedoneincdldeccxjneagaindone mov di 1 di 1 decdideccountjnzdonemovl1 dlmov di l1 转出错处理 没有这指令 不能送l1单元 因此时l1单元是字符 2 datasegmentstringdb abcd 0dhcountequ stringl1db dataends 24h 24h 不能用常量count作计数器 datasegmentstringdb abcdefghijk db2dup dataendscodesegmentassumecs code ds data ss stack es datastartprocfarbe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论