微机原理及接口例题(含答案)

上传人:ali****an 文档编号:119271412 上传时间:2020-01-10 格式:PDF 页数:37 大小:480.80KB
返回 下载 相关 举报
微机原理及接口例题(含答案)_第1页
第1页 / 共37页
微机原理及接口例题(含答案)_第2页
第2页 / 共37页
微机原理及接口例题(含答案)_第3页
第3页 / 共37页
微机原理及接口例题(含答案)_第4页
第4页 / 共37页
微机原理及接口例题(含答案)_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《微机原理及接口例题(含答案)》由会员分享,可在线阅读,更多相关《微机原理及接口例题(含答案)(37页珍藏版)》请在金锄头文库上搜索。

1、1、例 编写程序,计算756l 23 解:该除法运算过程表示如下:(注:75以BCD码的形式存放) 第一个商为1 1 2 第二个商为2 6 7 5 6 - 第一个余数为1 1 5 1 2 - 3 第二个余数为3 程序如下: FIRST DB 06H ;除数6 SECOND DB 75H ;被除数75H THIRD DB 2 DUP(0) ;存商 FOUR DB ? ;存余数 MOV AH,00H ;第一个被除数高位AH清0 MOV AL,SECOND ;AL 被除数75 AND AL,0F0H ;截取高4位 MOV CL,04H ROL AL,CL ;移至低4位 DIV FIRST ;AX/0

2、6,即000706; ;得结果:AL 商为1,AH余数1 MOV THIRD+1,AL ;结果单元第一个商1 MOV AL,SECOND ;AL 被除数75 AND AL,0FH ;AL 截低4位,故AX0105H AAD ;将AX中内容0105H调整为0FH DIV FIRST ;0FH/6,结果:AL 商为2,AH 余数3 MOV THIRD,AL ;THIRD单元第二个商2 MOV FOUR,AH ;FOUR单元第二个余数3 2、 例 设AL寄存器中存有报警标志。若D71,表示温度报警,程序 要转到温度报警处理程序T_ ALARM;D61,则转压力报警程序 P_ALARM。用TEST指令

3、来实现这种功能。 解:TEST AL,80H ;查AL的D71? JNZ T_ALARM ;是1(非零),则转温度报警程序 TEST AL,40H ;D70,D61? JNZ P_ALARM ;是1,转压力报警 (其中:JNZ为条件转移指令,表示结果非0 (ZF1)则转移) 3、 例 要求把数据段中以SRC_MESS为偏移地址的一串字 符“HELLO!”,传送到附加段中以NEW_LOC开始的单元中。 解:DATA SEGMENT ;数据段 SRC_MESS DB HELLO! ;源串 DATA ENDS ; EXTRA SEGMENT ;附加段 NEW_LOC DB 6 DUP(?) ;存放目

4、的串 EXTRA ENDS ; CODE SEGMENT ASSUME CS:CD, DS:DATA, ES:EXTRA START: MOV AX,DATA MOV DS,AX ;DS数据段段址 MOV AX,EXTRA MOV ES,AX ;ES附加段段址 LEA SI,SRC_MESS ;SI指向源串偏移地址 LEA DI,NEW_LOC ;DI指向目的串偏移地址 MOV CX,6 ;CX作串长度计数器 CLD ;清方向标志,地址增量 REP MOVSB ;重复传送串中各字节,直到CX=0 其中“REP MOVSB”指令可用以下几条指令代替: AGAIN: MOVS NEW_LOC, S

5、RC_MESS DEC CX JNZ AGAIN 4、 例 比较两个字符串,一个是程序中设定的口令串PASSWORD,另 一个是从键盘输入的字符串IN_WORD,若输入串与口令串相同,程序 将开始执行。否则,程序驱动PC机的扬声器发声,警告用户口令不 符,拒绝往下执行。 解:这可以用CMPS指令来实现,有关程序段如下: DATA SEGMENT ;数据段 PASSWORD DB 750424LI ;口令串 IN_WORD DB 750424LE ;从键盘输入的串 COUNT EQU 8 ;串长度 DATA ENDS CODE SEGMENT ;代码段 LEA SI, PASSWORD ;源串指

6、针 LEA DI, IN_WORD ;目的串指针 MOV CX, COUNT ;串长度 CLD ;地址增量 REPZ CMPSB ;CX0且串相等时重复比较 JNE SOUND ;若不相等,转发声程序 OK: ;比完且相等,往下执行 SOUND: ;使PC机扬声器发声 ;并退出 CODE ENDS 5、例 在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下 来,送到BX寄存器中,若没有查到,则将BX寄存器清0。设字符串起 始地址STRING的偏移地址为0,字符串长度为CX。 解: MOV DI,OFFSET STRING ;DI字符串偏移地址 MOV CX,COUNT ;CX字符串长度 M

7、OV AL,A ;AL关键字A的A5CII码 CLD ;清标志方向 REPNE SCASB ;CX0(没查完)和ZF=0(不相等)时 重复 JZ FIND ;若ZF=1,表示已搜到,转出 MOV DI,0 ;若ZF=0,表示没搜到,DI 0 FIND:MOV BX,DI ;BX 搜索次数 HLT 说明: DI初值存起始地址偏移量0,搜索一次后,DI自动加1,使DI的值等于 1; 每执行一次搜索操作,DI自动增1; 因此可用DI的值表示搜索次数。 6、 例 若在数据段中有一个数据块,起始地址为BLOCK,数据块中 的数为8位带符号数,要求将其中所含的正、负数分开,然后把正数送 到附加段中始址为P

8、LUS_DATA的缓冲区,负数则送到附加段中始址为 MINUS_DATA的缓冲区。 分析: 把数据块作为数据串处理: 用SI作源串指针; DI和BX分别作正、负数目的缓冲区的指针; CX用于控制循环次数。 技巧: 使用STOSB指令必须以SI为源指针,DI为目的指针; 负数区的目的指针在BX中,要用XCHG指令将BX内容送进DI,让DI指 向负数区,同时也把DI中的正数区目的指针保护了起来; 执行STOSB指令后,再用XCHG指令交换回来,以便下次重复执行时 (转回GOON标号后),LODS指令仍能正确执行。 解:写出如下程序段: START: MOV SI, OFFSET BLOCK ;SI

9、为源串指针 MOV DI, OFFSET PLUS_DATA ;DI为正数目的区指针 MOV BX, OFFSET MINUS_DATA ;BX为负数目的区指针 MOV CX, COUNT ;CX放循环次数 CLD GOON: LODSB BLOCK ;AL源操作数的一个字节 TEST AL, 80H ;是负数? JNZ MINUS ;是,转MINUS STOSB ;非负数,将字节送正数区 JMP AGAIN ;处理下一个字节 MINUS: XCHG BX, DI ;交换正负数指针 STOSB ;负数送入负数区 XCHG BX, DI ;回复正负数指针 AGAIN: DEC CX ;次数减1

10、JNZ GOON ;未处理完,继续传送 HLT ;停机 7、例 设某个学生的英语成绩已存放在AL寄存器中,若低于60分,则 打印F(FAIL);若高于或等于85分,则打印G(GOOD);当在60分和84分 之间时,打印P(PASS)。 解:用下面程序实现要求的操作。 程序: CMP AL,60 ;与60分比较 JB FAIL ;60,转FAIL CMP AL,85 ;60,与85分比较 JAE GOOD ;85,转GOOD MOV AL,P ;其它,将ALP JMP PRINT ;转打印程序 FAIL: MOV AL,F ; ALF JMP PRINT ;转打印程序 GOOD: MOV AL,

11、G ; ALG PRINT: ;打印存在AL中的字符 8、例 假设某温度控制系统中,从温度传感器输入一个8位二进制的摄 氏温度值。当系统中温度低于100度时,则打开加热器;当温度上升到 100度或100度以上时,关闭加热器,进行下一步处理。设温度传感器的 端口号为320H,同时假设控制加热器的输出信号连到端口321H的最低 有效位,当将这一位置1时,加热器便打开,清0时则关闭加热器。 解:实现上述温度控制的程序如下: 程序: GET_TEMP: MOV DX,320H ;DX指向温度输入端口 IN AL,DX ;读取温度值 CMP AL,100 ;与100度比较 JB HEAT _ON ;10

12、0度,加热 JMP HEAT _OFF ; 100度,停止加热 HEAT _ON: MOV AL,01H ;D0位置1,加热 MOV DX,321H ;加热器口地址 OUT DX,AL ;打开加热器 JMP GET_TEMP ;继续检测温度 HEAT _OFF: MOV AL,00H ;D0位置0,停止加热 MOV DX,321H OUT DX,AL ;关闭加热器 ;进行其他处理 9、 例 设商店里有8种商品,价格分别为83元,76元,65元,84元,7l 元,49元,62元和58元,现要将每种商品提价7元,编程计算每种商品 提价后的价格。 解:加法问题:将商品的原价按BCD码的形式,依次存放在标号为 OLD开始的8个存储单元中,而新的价格存放进NEW开始的8个单元, 然后用LOOP指令来实现8次循环。即 程序清单: OLD DB 83H,76H,65H,84H DB 71H,49H,62H,58H NEW DB 8 DUP( ?) MOV CX,08H ;共8种商品 MOV BX,00H ;BX作指针,初值为0 NEXT: MOV AL,OLDBX ;读入一个商品的原价 ADD AL,7 ;加上提价因子 DAA ;调整为十进制 MOV NEWBX ,AL ;存放

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号