欢迎来到天天文库
浏览记录
ID:1044957
大小:440.50 KB
页数:30页
时间:2017-11-07
《微机原理与接口例题与答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1、例编写程序,计算75÷6=l2……3解:该除法运算过程表示如下:(注:75以BCD码的形式存放)第一个商为1→12←第二个商为26/75-6-----------------第一个余数为1→15-12-----------------3←第二个余数为3程序如下:FIRSTDB06H;除数6SECONDDB75H;被除数75HTHIRDDB2DUP(0);存商FOURDB?;存余数………MOVAH,00H;第一个被除数高位AH清0MOVAL,SECOND;ALç被除数75ANDAL,0F0H;截
2、取高4位MOVCL,04HROLAL,CL;移至低4位DIVFIRST;AX/06,即0007/06;;得结果:ALç商为1,AH余数ç1MOVTHIRD+1,AL;结果单元ç第一个商1MOVAL,SECOND;ALç被除数75ANDAL,0FH;ALç截低4位,故AX=0105HAAD;将AX中内容0105H调整为0FHDIVFIRST;0FH/6,结果:ALç商为2,AHç余数3MOVTHIRD,AL;THIRD单元ç第二个商2MOVFOUR,AH;FOUR单元ç第二个余数32、例设AL寄存器
3、中存有报警标志。若D7=1,表示温度报警,程序要转到温度报警处理程序T_ALARM;D6=1,则转压力报警程序P_ALARM。用TEST指令来实现这种功能。解:TESTAL,80H;查AL的D7=1?JNZT_ALARM;是1(非零),则转温度报警程序TESTAL,40H;D7=0,D6=1?JNZP_ALARM;是1,转压力报警(其中:JNZ为条件转移指令,表示结果非0(ZF=1)则转移)3、例要求把数据段中以SRC_MESS为偏移地址的一串字符“HELLO!”,传送到附加段中以NEW_LOC开
4、始的单元中。解:DATASEGMENT;数据段SRC_MESSDB‘HELLO!’;源串DATAENDS;EXTRASEGMENT;附加段NEW_LOCDB6DUP(?);存放目的串EXTRAENDS;CODESEGMENTASSUMECS:CD,DS:DATA,ES:EXTRASTART:MOVAX,DATAMOVDS,AX;DS=数据段段址MOVAX,EXTRAMOVES,AX;ES=附加段段址LEASI,SRC_MESS;SI指向源串偏移地址LEADI,NEW_LOC;DI指向目的串偏移地址
5、MOVCX,6;CX作串长度计数器CLD;清方向标志,地址增量REPMOVSB;重复传送串中各字节,直到CX=0其中“REPMOVSB”指令可用以下几条指令代替:AGAIN:MOVSNEW_LOC,SRC_MESSDECCXJNZAGAIN 4、例比较两个字符串,一个是程序中设定的口令串PASSWORD,另一个是从键盘输入的字符串IN_WORD,若输入串与口令串相同,程序将开始执行。否则,程序驱动PC机的扬声器发声,警告用户口令不符,拒绝往下执行。解:这可以用CMPS指令来实现,有关程序段如下:D
6、ATASEGMENT;数据段PASSWORDDB‘750424LI’;口令串IN_WORDDB‘750424LE’;从键盘输入的串COUNTEQU8;串长度DATAENDS……CODESEGMENT;代码段……LEASI,PASSWORD;源串指针LEADI,IN_WORD;目的串指针MOVCX,COUNT;串长度CLD;地址增量REPZCMPSB;CX≠0且串相等时重复比较JNESOUND;若不相等,转发声程序OK:……;比完且相等,往下执行……SOUND:……;使PC机扬声器发声……;并退出C
7、ODEENDS5、例在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送到BX寄存器中,若没有查到,则将BX寄存器清0。设字符串起始地址STRING的偏移地址为0,字符串长度为CX。解:MOVDI,OFFSETSTRING;DI=字符串偏移地址MOVCX,COUNT;CX=字符串长度MOVAL,‘A’;AL=关键字A的A5CII码CLD;清标志方向REPNESCASB;CX≠0(没查完)和ZF=0(不相等)时重复JZFIND;若ZF=1,表示已搜到,转出MOVDI,0;若ZF=0,表示没搜
8、到,DIç0FIND:MOVBX,DI;BXç搜索次数HLT说明:DI初值存起始地址偏移量0,搜索一次后,DI自动加1,使DI的值等于1;每执行一次搜索操作,DI自动增1;因此可用DI的值表示搜索次数。6、例若在数据段中有一个数据块,起始地址为BLOCK,数据块中的数为8位带符号数,要求将其中所含的正、负数分开,然后把正数送到附加段中始址为PLUS_DATA的缓冲区,负数则送到附加段中始址为MINUS_DATA的缓冲区。分析:把数据块作为数据串处理:用SI作源串指针;DI和BX分别
此文档下载收益归作者所有