- 5
- 0
- 约1.54万字
- 约 75页
- 2019-11-06 发布于广东
- 举报
已知数据区内有16个数,从内部RAM30H开始存放,要搜索的关键字在20H中,若数据区中搜索到关键字,则在21H中记录关键字在数据区中的序号,若数据区中没有搜索到关键字,则置用户标志F0为1。 ORG 0000H MOV R0,#30H ;数据区首址 MOV R1,#16 ;数据区长度 MOV 20H,#KEY ;关键字送20H单元 CLR F0 ;清用户标志位 MOV 21H,#01 ;序号置1 例.搜索关键字 LP:MOV A,@R0 ;取数 CJNE A,20H,LP1 HERE:SJMP HERE ;找到关键字,结束 LP1:INC 21H ;序号加1 INC R0 ;数据区地址指针加1 DJNZ R1,LP;继续 SETB F0 ;未搜索到关键字,则置位用户标志 SJMP HERE 实验一 清0、移数 将片内50H~5FH及片外0010H~004FH单元清0;然后将片内30H~3FH的数据移到片外0000H~000FH中;判断: 若(30H)≤15,则求其平方存到40H中,并将位00H置1 若(30H)=15, 则加15存到40H中,并位01H置1 若(30H)≥15, 则减15存到40H中,并位02H置1 END 图4–1 汇编过程示意图 图4–2 单分支结构示意图 图4–3 多分支结构示意图 图4–4 计数循环结构示意图 图4–5 条件循环结构示意图 图4–6 子程序调用与返回过程示意图 实验一 清0、移数 将片内50H~5FH及片外0010H~004FH单元清0;然后将片 内30H~3FH的数据移到片外0000H~000FH中;判断: 若(30H)≤15,则求其平方存到40H中,并将位00H置1 若(30H)=15, 则加15存到40H中,并位01H置1 若(30H)≥15, 则减15存到40H中,并位02H置1 实验二 加法、排序 有两个长度为10的无符号数分别放在片内30H和40H为首的存储单元中(低位),求其对应项之和(带进位位),放在50H为首的单元中,然后按升序排列放在60H为首的单元中。 实验三 查表、散转 设有一表格,表中数为:00H、11H、22H、33H、44H、 55H、66H、77H、88H、99H、AAH、BBH、CCH、 DDH、EEH、FFH。根据片外0000H单元的低4位的数, 取出表中相应的值存到片内30H中;根据片外0000H单元 的高4位的数,将片内RAM区中可位寻址的相应的位置1 (从位00H~位0FH,只可有一个位地址为1) ① S0单独按下, 红灯亮,其余灯灭; ② S1单独按下, 绿灯亮,其余灯灭; ③ 其余情况, 黄灯亮。 已知电路如图4-5所示,要求实现: 解:程序如下 SGNL:ANL P1,;红绿黄灯灭 ORL P1,;置P1.0、P1.1输入态, P1.5~P1.7状态不变 SL0: JNB P1.0,SL1 ;P1.0=0,S0未按下,转判S1 JNB P1.1,RED ;P1.0=1,S0按下;且P1.1=0,S1未按下,转红灯亮 YELW:SETB P1.4 ;黄灯亮 CLR P1.2 ;红灯灭 CLR P1.3 ;绿灯灭 SJMP SL0 ;转循环 SL1: JNB P1.1,YELW ;P1.0=0,S0未按下;P1.1=0,S1未按下,转黄灯亮 GREN:SETB P1.3 ;绿灯亮 CLR P1.2 ;红灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 RED: SETB P1.2 ;红灯亮 CLR P1.3 ;绿灯灭 CLR P1.4 ;黄灯灭 SJMP SL0 ;转循环 在单片机系统中设置+、?、?、?四个运算命令键,它们的键号分别为0、1、2、3。当其中一个键按下时,进行相应的运算。操作数由P1口和P3口输入,运算结果仍由P1口和P3口输出。具体如下:P1口输入被加数、被减数、被乘数和被除数,输出运算结果的低8位或商;P3口输入加数、减数、乘数和除数,输出进位(借位)、运算结果的高8位或余数。键盘号已存放在30H中。 散转程序 散转程序是一种并行多分支程序。 单片机四则运算系统。 解:程序如下: PRGM: MOV P1,#0FFH ;P1口置输入态
原创力文档

文档评论(0)