工学

填空题在汇编语言程序设计中,以中断方式结束程序返回系统,送入AH寄存器中的功能号是()或()。

题目
填空题
在汇编语言程序设计中,以中断方式结束程序返回系统,送入AH寄存器中的功能号是()或()。
如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

中断服务程序以中断返回指令RETI结束。()

此题为判断题(对,错)。


正确答案:正确

第2题:

汇编语言程序设计中的三种构成方法分别是顺序程序设计、【 】和循环程序设计。


正确答案:分支程序设计
分支程序设计

第3题:

程序中断处理中,中断程序的入口地址在()中。

A、中断控制器

B、屏蔽寄存器

C、状态寄存器

D、中断向量


参考答案:D

第4题:

在ARM汇编语言程序设计中,经常用到子程序设计及调用,与子程序设计与调用无关的指令或伪指令是:()。

A.BL SerchMin

B.IMPORT SerchMin

C.MOV PC,LR

D.B SerchMin


正确答案:D

第5题:

在ARM汇编语言程序设计中,用于子程序设计及调用,最常用的指令是()。

A.BL MyLabel

B.BX MyLabel

C.BLX MyLabel

D.B MyLabel


正确答案:A

第6题:

中断服务程序中,首先保护现场,将有关寄存器的内容压栈,然后进入中断服务程序。最后在恢复现场后,执行中断返回指令,返回断点继续执行。()

此题为判断题(对,错)。


参考答案正确

第7题:

在中断处理过程中,完全由硬件自动执行的步骤是(60)。

A.保存中断点

B.识别中断源

C.保存将被中断服务程序破坏的通用寄存器中的内容

D.返回中断点


正确答案:A
解析:本题考查中断处理的过程。中断是指打断中央处理器正在执行的工作,让中央处理器去处理其他更加重要或者更为紧迫的任务,在处理完紧急任务后又能回到以前执行的地方。发起中断的事务即为中断源。中断点是用来恢复现场用的。中央处理器收到中断请求后,如果是当前允许的中断,那么停止正在执行的代码,并把内部寄存器入栈,这个过程不能被再次打断,所以在保护现场的开始要先关中断,保护完后再开中断。这个过程应该尽量短,以避免错过了其他中断,因此,这个过程最好用硬件自动来完成,这样速度会快很多。

第8题:

在指令执行过程中,如果发生中断,程序计数器将送入______。

A.程序的结束地址

B.程序的起始地址

C.中断服务程序入口地址

D.调度程序的入口地址


正确答案:C
解析:在指令执行过程中,如果发生中断,指令执行完当前指令后,将中断程序的入口地址送入程序计数器,即记录当前指令的位置,然后去执行中断程序,中断程序结束后,退回到先前记录的位置,继续执行原来的程序。

第9题:

阅读以下说明和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)空缺处的内容填写完整。


正确答案:(1)16或等价的二进制数“00010000B” (2)20F3H或等价的二进制数“0010000011110011B” (3)Calculate (4)NEXT (5)DEC CL (6)LOP (7)21H (8)CODE ENDS 这是一道要求读者利用逻辑尺控制法进行循环程序设计的程序分析题。本题的解答思路如下: ①在本案例的循环程序中循环体又内嵌有多个不同的分支结构。每执行循环体一次将根据事先规定好的标志位去执行具体的分支程序。试题要求采用逻辑尺控制法实现对于这种结构的循环程序设计。逻辑尺控制法首先应设计一把逻辑“尺”即用字节、字、双字甚至根据需要所设置的多字节中的各位表示不同的操作如果需在循环中执行更多分支也可采用多位组合。 ②题干中对执行程序段Collect_task和Calculate_task的顺序及次数做了如下约定: Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次) 由于程序只简单执行两种不同的程序段因此用一位“0”或“1”来分别标志转向执行两种不同的分支操作。执行程序段Collect_task和Calculate_task共有16次因此采用一个字(16位)来分别表示这两个程序段的执行顺序和次数。因此(1)空缺处可填人循环的总次数“16”或者是等价的二进制数“00010000B”。 根据以上分析结果可设计出相应的逻辑尺如图6-25所示。 图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 ;模块结束伪指令
(1)16或等价的二进制数“00010000B” (2)20F3H或等价的二进制数“0010000011110011B” (3)Calculate (4)NEXT (5)DEC CL (6)LOP (7)21H (8)CODE ENDS 这是一道要求读者利用逻辑尺控制法进行循环程序设计的程序分析题。本题的解答思路如下: ①在本案例的循环程序中,循环体又内嵌有多个不同的分支结构。每执行循环体一次,将根据事先规定好的标志位去执行具体的分支程序。试题要求采用逻辑尺控制法实现对于这种结构的循环程序设计。逻辑尺控制法首先应设计一把逻辑“尺”,即用字节、字、双字,甚至根据需要所设置的多字节中的各位表示不同的操作,如果需在循环中执行更多分支,也可采用多位组合。 ②题干中对执行程序段Collect_task和Calculate_task的顺序及次数做了如下约定: Collect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calculate_task(2次) 由于程序只简单执行两种不同的程序段,因此用一位“0”或“1”来分别标志转向执行两种不同的分支操作。执行程序段Collect_task和Calculate_task共有16次,因此采用一个字(16位)来分别表示这两个程序段的执行顺序和次数。因此(1)空缺处可填人循环的总次数“16”,或者是等价的二进制数“00010000B”。 根据以上分析结果可设计出相应的逻辑尺,如图6-25所示。 图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 ;模块结束伪指令

第10题:

在ARM汇编语言程序设计中主程序和子程序参数的传递需要满足ATPCS规则,ATPCS规则中用来传递参数的寄存器是()

A.R0

B.R1

C.R2

D.R3

E.R4


参考答案:A, B, C, D

更多相关问题