2013年上半年软考《嵌入式系统设计师》下午模拟试卷二

如果您发现本试卷没有包含本套题的全部小题,请尝试在页面顶部本站内搜索框搜索相关题目,一般都能找到。
16

阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。表6-3所示为 x86系统指令及寄存器说明表。

 [说明]

 在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。

 设有256个字节的数据,已按从小到大的顺序存放在以BINTAB为首地址的数据区单元中,现要求查找其中值为126的数据,用对分查表法查询的汇编程序如下:

 [汇编程序代码]

DATA  SEGMENT

BINTAB DBl8,25,32,46,56,78,…      ;第1~100个数据

    DB 90,95,99,100,106,126,…    ;第101~200个数据

    DB 189,195,197,202,206,216,…   ;第201~256个数据

COUNT  EQU  256

FLAG   DW    ?

KEY   EQU  (1) 

DATA  ENDS

STAK  SEGMENT

STPN  DB 20 DUP(?)

STAK  ENDS

CODE  SEGMENT

    ASSUME CS,CODE, DS,DATA, ES:DATA, SS:STAK

BINSEAT PROC FAR

START, MOV  AX, DATA

    MOV  DS, AX

    MOV  ES, AX

    LEA  SI, BINTAB

    MOV  CX, COUNT

    MOV  DX, 1

    MOV  AX, SI

    ADD  AX, CX

    MOV  DI, AX

    MOV  AL, KEY

LOP0,  MOV  BX, SI

    ADD  BX, DI

    SHR  BX, 1

    CMP  AL, [BX]

    JZ  FOUND

    PUSHF

   (2) 

    JZ  NFOUND

    POPF

    JL  LESS

    MOV  SI, BX

    JMP  NEXT

LESS,  (3) 

NEXT,  (4) 

    JMP  LOP0

NFOUND: MOV  AX, DX     ;未找到,标志全1送DX

FOUND: MOV  AX, DX

   MOV  FLAG, AX

   RET

BINSEAT ENDP

CODE ENDS

      (5)

请根据试题的要求,将汇编程序代码中(1)~(5)空缺处的内容填写完整。

17

以下是利用MCS-51系列单片机汇编语言实现模拟I2C总线接收N个字节数据的程序段(RDNBYTE),请将汇编程序代码中(9)~(13)空缺处的内容填写完整。表6-21所示为MCS-51系列单片机部分汇编指令及寄存器说明。

程序中已定义了标号为START的启动位子程序、标号为STOP的停止位子程序、标号为MACK的发送应答位子程序、标号为MNACK的发送非应答位子程序、标号为 CACK的应答位检查子程序、标号为WRBYT的向VSDA线上发送1个数据字节的子程序、标号为RDBYT的从VSDA线上读取1个数据字节的子程序。调用RDNBYTE程序的归一化操作命令是    MOV SLA,#SLAR    MOV NUMBYTE,#N    LCALL RDNBYT 【汇编程序代码】    VSDA  EQU  P1.6   ;虚拟I2C总线数据线    VSCL  EQU  P1.5   ;虚拟I2C总线时钟线    SLA  EQU  50H   ;寻址字节存放单元    NUMBYTE EQU  51H   ;传送字节数存放单元    MTD  EQU  30H   ;发送数据缓冲区    MRD  EQU  40H   ;接收数据缓冲区    SLAW0 EQU  0AOH   ;写AT24C64(器件地址为0AOH)    SLAR0 EQU  0A1H   ;读24C64    SLAW1 EQU  40H   ;写PCF8574(器件地址为040H)    SLAR1 EQU  41H   ;读PCF8574    ;模拟I2C总线接收N个字节数据    RDNBYTE:MOV  R3,NUMBYTE        LCALL START ;发送启动位        MOV  A,SLA ;发送寻址字节(读)         (9)          (10)         JB   F0,RDNBYTE    RDN:  MOV  R1,#MRD    RDN1:  (11)         MOV  @R1,A        DJNZ  R3,ACK ;N个字节读完否?未完转         (12)         LCALL STOP  ;发送停止位        RET    ACK:(13)         INC  R1        SJMP  RDN1  ;转读下一个字节数据  (9)~(13)空缺处供选择的答案  A.LCALL START  B.LCALL MACK  

C.LCALL CACK  D.LCALL RDBYT  

E.LCALL WRBYT  F.LCALL MNACK  G.LCALL STOP