20 A Gantt chart is useful in determining:
A. the level of effort for a task
B when a task starts and stops
C. how tasks are related to each other
D. who is assigned to do a task
E. All of the above
第1题:
阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。
【说明】
在某嵌入式安全监测系统中,对某任务的加工操作需通过数据采集(Collect_task)、计算(Calculate_task)这两个不同的程序段来完成,并且执行程序段Collect_task和Calculate _task的顺序及次数有如下约定:
Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次)
表6-22 所示为x86系统部分指令及寄存器说明。

采用逻辑尺控制法实现以上要求的汇编程序如下:
【汇编程序代码】
N EQU (1)
RULE EQU (2)
CODE SEGMENT
ASSUME CS:CODE
START: MOV AX,RULE
MOV CL,N
LOP: SAL AX,1
JC (3)
Collect: CALL Collect_task ;执行Collect_task程序段
JMP (4)
Calculate:CALL Calculate_task ;执行Calculate_task程序段
NEXT: (5)
JNZ (6)
MOV AH,4CH ;功能号送入AH寄存器
INT (7) ;结束程序运行,中断返回
(8)
END START
请根据试题的要求,将汇编程序代码中(1)~(8)空缺处的内容填写完整。
图6-25中阴影部分是程序段Collect_task执行的顺序和次数其余是程序段 Calculate task执行的顺序和次数。注意执行“Collect_task(2次)”中第1次执行的 Collect_task任务是放置在逻辑尺的最高位还是放置在逻辑尺的最低位由程序段中算术左移操作语句“SAL AX1”决定。将图6-25所示的逻辑尺的参数定义转换成等价的十六进制数0010 0000 1111 0011B=20F3H。因此(2)空缺处可填入“20F3H”或者是等价的二进制数“0010000011110011B”。
③程序中已给出代码(CODE)段定义伪指令“CODE SEGMENT”由于段定义伪指令的格式是:
段名>SEGMENT[定位方式][连接方式工类别名]
段名>ENDS
因此在模块结束伪指令“END START”之前需安排一条“CODE ENDS”即(8)空缺处需填入CODE段定义结束伪指令一“CODE ENDS”。
④由于程序段中已给出“功能号送入AH寄存器”及“中断返回”等关键信息由此可判断(7)空缺处需填入某一个中断类型码。由于软中断类型码通常取20H~27H其中系统功能调用的通用格式是:
功能号送入AH寄存器
INT 21H
语句“MOV AH4CH”中“4CH”就是相应的功能号因此(7)空缺处需填入“21H”。
⑤结合逻辑尺控制算法的设计思想和试题中给出的指令及寄存器说明表仔细分析试题的程序段先填写(3)、(4)、(6)空缺处的标号内容最后完成(5)空缺处循环计数减1操作(DEC CL)的推理。以下给出该程序段的每条语句的详细解析。
N EQU 14 ;定义循环的总次数
RULE EQU 183CH ;定义逻辑尺
CODE SEGMENT ;CODE段定义伪指令
ASSUME CS:CODE ;段寄存器说明伪指令
START: MOV AXRULE ;AX←逻辑尺标志
MOV CLN ;CL←循环的总次数
LOP: SAL AX1 ;算术左移操作CF←逻辑尺最高位
JC Calculate ;当CF=1时转至Calculate标号处
Collect: CALL Collect_task ;当CF=0时执行Collect_task程序段
JMP NEXT ;无条件转至NEXT标号处
Calculate:CALL Calculate_task ;执行Calculate_task程序段
NEXT: DEC CL ;循环计数CL←CL—1
JNZ LOP ;若CL≠0转至LOP标号处继续循环
MOV AH4CH ;若CL=0结束程序运行返回
INT 21H ;系统功能调用
CODE ENDS ;CODE段定义结束伪指令
END START ;模块结束伪指令
图6-25中,阴影部分是程序段Collect_task执行的顺序和次数,其余是程序段 Calculate task执行的顺序和次数。注意,执行“Collect_task(2次)”中第1次执行的 Collect_task任务是放置在逻辑尺的最高位,还是放置在逻辑尺的最低位,由程序段中算术左移操作语句“SAL AX,1”决定。将图6-25所示的逻辑尺的参数定义转换成等价的十六进制数,0010 0000 1111 0011B=20F3H。因此(2)空缺处可填入“20F3H”,或者是等价的二进制数“0010000011110011B”。
③程序中已给出代码(CODE)段定义伪指令“CODE SEGMENT”,由于段定义伪指令的格式是:
段名>SEGMENT[定位方式][连接方式工,类别名,]
段名>ENDS
因此在模块结束伪指令“END START”之前需安排一条“CODE ENDS”,即(8)空缺处需填入CODE段定义结束伪指令一“CODE ENDS”。
④由于程序段中已给出“功能号送入AH寄存器”及“中断返回”等关键信息,由此可判断(7)空缺处需填入某一个中断类型码。由于软中断类型码通常取20H~27H,其中系统功能调用的通用格式是:
功能号送入AH寄存器
INT 21H
语句“MOV AH,4CH”中“4CH”就是相应的功能号,因此(7)空缺处需填入“21H”。
⑤结合逻辑尺控制算法的设计思想和试题中给出的指令及寄存器说明表,仔细分析试题的程序段,先填写(3)、(4)、(6)空缺处的标号内容,最后完成(5)空缺处循环计数减1操作(DEC CL)的推理。以下给出该程序段的每条语句的详细解析。
N EQU 14 ;定义循环的总次数
RULE EQU 183CH ;定义逻辑尺
CODE SEGMENT ;CODE段定义伪指令
ASSUME CS:CODE ;段寄存器说明伪指令
START: MOV AX,RULE ;AX←逻辑尺标志
MOV CL,N ;CL←循环的总次数
LOP: SAL AX,1 ;算术左移操作,CF←逻辑尺最高位
JC Calculate ;当CF=1时,转至Calculate标号处
Collect: CALL Collect_task ;当CF=0时,执行Collect_task程序段
JMP NEXT ;无条件转至NEXT标号处
Calculate:CALL Calculate_task ;执行Calculate_task程序段
NEXT: DEC CL ;循环计数,CL←CL—1
JNZ LOP ;若CL≠0,转至LOP标号处,继续循环
MOV AH,4CH ;若CL=0,结束程序运行,返回
INT 21H ;系统功能调用
CODE ENDS ;CODE段定义结束伪指令
END START ;模块结束伪指令
第2题:
第3题:
Linux 0.11系统中描述进程控制块的数据结构是()
A.task
B.sys_task_table
C.sys_call_table
D.task_struct
第4题:
第5题:
29、Linux中进程的状态,其中TASK_UNINTERRUPTIBLE表示可唤醒阻塞态,TASK_ZOMBIE表示僵死(僵尸)状态。
第6题:
在Linux操作系统中,运行态和就绪态进程的状态被统一为______。
A.TASK_RUNNING
B.TASK_INTERRUPTIBLE
C.TASK_READY
D.TASK_ZOMBIE