第1题
时,要注意对执行时间、存储空间和开发/维护时间这三种资源的使用进行优化。请具体说明在编写代码时,需要做到哪几点编码准则?
第2题
用两种不同的方法来实现。请在200字以内归纳这两个算术运算程序段所采用的实现方法。
第3题
场景中的每一个场景都需要确定测试用例,一般采用矩阵或决策表来确定和管理测试用例。表6-5是一种通用格式,表中各行代表各个测试用例,而各列代表测试用例的信息。本例中的测试用例包含测试用例ID号、场景(或说明/条件)、测试用例中涉及的所有数据元素(作为输人或已经存在于数据库中)以及预期结果等项目。
测试用例的设计步骤通常是:首先确定执行用例场景所需的数据元素(本例中包括账号、是否黑名单卡、输入油量、账面金额以及加油机油量),然后构建矩阵,最后确定包含执行场景所需的适当条件的测试用例。在表6-6的测试矩阵中,V表示有效数据元素,I表示无效数据元素,n/a表示不适用,例如CW01表示“成功加油”基本流。请按上述规定为其他应用场景设计测试用例矩阵。
第6题
阅读以下说明和X86汇编语言代码,将应填入(n)处的字句写在答题纸的对应栏内。
[说明]
设有数组X和Y。X数组中有X1,X2、…、X10十个数,Y中有Y1、Y2、…、 Y10十个数。编制程序计算:
Z1=X1+Y1 Z2=X2+Y2 Z3=X3-Y3 Z4=X4-Y4
Z5=X5-Y5 Z6=X6+Y6 Z7=X7-Y7 Z8=X8-Y8
Z9=X9+Y9 Z10=X10+Y10
设置一个10位的标志尺:LOGIC_RULE,若它的每一位决定了当前按顺序该做加法(该位为0)或减法(该位为1)操作,则由上列等式可知LOGIC RULE中的低10位应是(1)。
[汇编程序代码]
datarea segment ;define data segment
x dw x1,x2,x3,x4,x5,x6,x7,x8,x9,x10
y dw y1,y2,y3,y4,y5,y6,y7,y8,y8,y10
z dw z1,z2,z3,z4,z5,z6,z7,z8,z9,z10
logic_ruledw (2) ;LOGIC_RULE initialize
datarea ends
program segment ;define code segment
main proc far
assume cs:program, ds:datarea
start: ;starting execution address
(3) ;save old data segment
sub ax, ax ;put zero in AX
push ax ;save it on stack
;set DS register to current data segment
mov ax,datarea
mov ds,ax
;MAIN PART OF PROGRAM GOES HERE
mov bx,0
mov ex,10
mov dx,logic_rule
next:
mov ax,x[bx]
shr dx,1
jc subtract
(4)
jmp short result
subtract:
sub ax, y [bx]
result:
(5) ;result=>Zn
add bx,2
loop next
ret ;return to DOS
main endp
;end of main part of program
program ends
;end of code segment
end start ;end of assembly
附:指令及寄存器说明。
MOV 传送字或字节
PUSH 把字压入堆栈
SHR 逻辑右移
JC 有进位时转移
JMP 无条件转移指令
SUB 减法
ADD 加法
LOOP CX不为零时循环
JNE/JNZ 不等于时转移
CMP 比较
段寄存器2个:
CS: 代码段寄存器
DS: 数据段寄存器
数据寄存器4个:
AX: 累加器
BX: 基址寄存器
CX: 计数寄存器
DX: 数据寄存器
(1)00 1101 1100
(2)00dch, 或00DCH,或220,或等价的二进制形式
(3)push ds
(4)add ax,y[bx]
(5)mov z[bx],ax
第8题
表。
[说明]
在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。
设有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)空缺处的内容填写完整。
第10题
阅读以下说明和C语言代码,回答问题1至问题5,将解答填入答题纸的对应栏内。
[说明]
在实模式存储管理方案下,嵌入式系统的内存地址空间的布局一般可以分为五个段:代码段(text)、数据段(data)、bss段(bss)、堆(heap)和栈(stack)。
图16-4为一段例程。
1: include
2: unsigned char gvCh;
3: unsigned short gvShort;
4: unsigned int gvInt = 0x12345678;
5: unsigned long gvLong = 0x87654321;
6: void main(void)
7: {
8: unsigned char array[lO],*p;
9: p = malloc(lO*sizeof(char));
10: while (1);
代码段、数据段和bss段的大小是在什么时候确定的?
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!