《单片机技术与应用》单片机程序设计(1)(举一反三考点练) -课后自测 卷2

2024-12-31
| 2份
| 8页
| 85人阅读
| 0人下载

内容正文:

举一反三考点练 《单片机技术与应用》单片机程序设计-课后自测 知识点一 简单程序编写(内部数据传送,顺序结构、无条件循环结构) 1. 请简述单片机内部数据传送的三种寻址方式,并给出每种寻址方式的一个例子。 2. 请编写一个顺序结构的程序,实现将累加器A中的数据传送到寄存器R1,再将寄存器R1的数据传送到寄存器R2。 3. 请使用DJNZ指令编写一个无条件循环结构,实现累加器A中的数据从1加到10。 4. 请解释无条件循环结构中循环条件的作用,并举例说明如何通过修改循环条件来控制循环次数。 知识点二 单片机分支程序读识(分支结构、有限循环结构) 1. 请简述单片机编程中分支结构的概念及其实现方式。 2. 请阐述有限循环结构的四部分构成及其作用。 3. 编写一个汇编语言程序,实现将一个数组中的元素从小到大排序的功能。 4. 请解释以下汇编语言程序段的功能,并指出其中的循环类型。 MOV CX, 10 MOV AX, 0 SUM_LOOP: ADD AX, CX DEC CX JNZ SUM_LOOP MOV SUM, AX 知识点三 条件分支程序编写 1. 编写一个汇编程序,实现以下功能:如果AX寄存器中的值为正数,则将其值加10;如果为负数,则将其值减10。结果存回AX寄存器。 2. 编写一个汇编程序,比较两个无符号数,如果第一个数大于第二个数,则将第一个数减去第二个数,并将结果存入DX寄存器。 3. 编写一个汇编程序,计算两个有符号数相加,如果结果溢出,则将结果存入BX寄存器。 4. 编写一个汇编程序,实现以下功能:如果AX寄存器中的值为偶数,则将其值乘以2;如果为奇数,则将其值除以2(向下取整)。结果存回AX寄存器。 原创精品资源学科网独家享有版权,侵权必究!2 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$ 举一反三考点练 《单片机技术与应用》单片机程序设计-课后自测 知识点一 简单程序编写(内部数据传送,顺序结构、无条件循环结构) 1. 请简述单片机内部数据传送的三种寻址方式,并给出每种寻址方式的一个例子。 【答案】 (1)立即寻址:操作数直接包含在指令中。例如:MOV A, #55H(将立即数55H传送到累加器A中) (2)直接寻址:操作数地址直接包含在指令中。例如:MOV A, 30H(将内存单元30H中的数据传送到累加器A中) (3)寄存器寻址:操作数存放在寄存器中。例如:MOV A, R0(将寄存器R0中的数据传送到累加器A中) 2. 请编写一个顺序结构的程序,实现将累加器A中的数据传送到寄存器R1,再将寄存器R1的数据传送到寄存器R2。 【答案】 MOV R1, A MOV R2, R1 3. 请使用DJNZ指令编写一个无条件循环结构,实现累加器A中的数据从1加到10。 【答案】 MOV A, #01H MOV R0, #0AH Loop: ADD A, #01H DJNZ R0, Loop 4. 请解释无条件循环结构中循环条件的作用,并举例说明如何通过修改循环条件来控制循环次数。 【答案】 循环条件用于判断循环是否继续执行。在无条件循环结构中,循环条件通常是固定的,如寄存器的值不为0。 举例:以下程序实现累加器A中的数据从1加到10。 MOV A, #01H MOV R0, #0AH Loop: ADD A, #01H DJNZ R0, Loop 通过修改R0的初值,可以控制循环次数。例如,将R0的初值改为#05H,循环体将执行5次。 知识点二 单片机分支程序读识(分支结构、有限循环结构) 1. 请简述单片机编程中分支结构的概念及其实现方式。 【答案】分支结构是指程序根据特定的条件判断结果来选择不同的执行路径。在单片机编程中,分支结构通过条件跳转指令来实现,如JZ、JNZ、JC等。 2. 请阐述有限循环结构的四部分构成及其作用。 【答案】有限循环结构的四部分构成包括: (1) 初始化部分:建立循环初始值,如初始化地址指针、计数器等。 (2) 工作部分:完成特定功能的程序段。 (3) 修改部分:修改循环参数,如计数器的值、操作数地址等。 (4) 控制部分:判断循环结束条件是否成立。 3. 编写一个汇编语言程序,实现将一个数组中的元素从小到大排序的功能。 【答案】(以下为伪代码,具体实现需根据实际汇编语言语法调整) MOV AX, OFFSET ARRAY MOV BX, LENGTHOF ARRAY DEC BX OUTER_LOOP: MOV CX, BX MOV SI, AX INNER_LOOP: MOV AL, [SI] CMP AL, [SI+1] JNA NEXT XCHG AL, [SI+1] MOV [SI], AL NEXT: ADD SI, 1 LOOP INNER_LOOP DEC BX JNZ OUTER_LOOP 4. 请解释以下汇编语言程序段的功能,并指出其中的循环类型。 MOV CX, 10 MOV AX, 0 SUM_LOOP: ADD AX, CX DEC CX JNZ SUM_LOOP MOV SUM, AX 【答案】该程序段的功能是将从1到10的整数累加,并将结果存入SUM变量。循环类型为计数循环,使用CX寄存器作为计数器。 知识点三 条件分支程序编写 1. 编写一个汇编程序,实现以下功能:如果AX寄存器中的值为正数,则将其值加10;如果为负数,则将其值减10。结果存回AX寄存器。 【答案】 CODE SEGMENT ASSUME CS:CODE START: MOV AX, -5 ; 示例值,可修改为其他值测试 TEST AX, AX JS NEGATIVE POSITIVE: ADD AX, 10 JMP ENDIF NEGATIVE: SUB AX, 10 ENDIF: ; AX 现在包含修改后的值 MOV AH, 4CH INT 21H CODE ENDS END START 2. 编写一个汇编程序,比较两个无符号数,如果第一个数大于第二个数,则将第一个数减去第二个数,并将结果存入DX寄存器。 【答案】 DATA SEGMENT NUM1 DW 30 NUM2 DW 20 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, NUM1 CMP AX, NUM2 JA GREATER XOR DX, DX ; 如果不大于,DX置为0 JMP ENDIF GREATER: SUB AX, NUM2 MOV DX, AX ENDIF: ; DX 现在包含结果 MOV AH, 4CH INT 21H CODE ENDS END START 3. 编写一个汇编程序,计算两个有符号数相加,如果结果溢出,则将结果存入BX寄存器。 【答案】 DATA SEGMENT NUM1 DW 32767 NUM2 DW 1 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AX, NUM1 ADD AX, NUM2 JNO NO_OVERFLOW MOV BX, AX NO_OVERFLOW: ; 如果溢出,BX包含结果 MOV AH, 4CH INT 21H CODE ENDS END START 4. 编写一个汇编程序,实现以下功能:如果AX寄存器中的值为偶数,则将其值乘以2;如果为奇数,则将其值除以2(向下取整)。结果存回AX寄存器。 【答案】 CODE SEGMENT ASSUME CS:CODE START: MOV AX, 7 ; 示例值,可修改为其他值测试 原创精品资源学科网独家享有版权,侵权必究!2 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $$

资源预览图

《单片机技术与应用》单片机程序设计(1)(举一反三考点练) -课后自测 卷2
1
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。