请编制程序,其功能是:内存中连续存放的20个8位无符号数是一个自动抄表仪抄录的 20个用户某月天然气的使用量(立方米),天然气费用的计算公式如下(X表示天然气使用量; Y表示需交纳的天然气费用,单位为分):
a) Y=X*70 X≤10
b) Y=10*70+(X-10)*120 X>10
例如:
天然气使用量(X)为04H,0FH,18H…
天然气费用(Y)为0118H,0514H,094CH…
试计算出这20个用户应缴纳的天然气费,结果用字(WORD)表示。
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD:FAR, SAVE:FAR
N EQU 20
RATE1 EQU 70
RATE2 EQU 120
DELTA EQU 10
STAC SEGMENT STACK
DB 128 DUP()
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP()
RESULT DW N DUP(0)
NAME0 DB 'INPUT 1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS :CODE,DS :DATA,SS: STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N ; 字节数
CALL LOAD ; 从INPUT1.DAT中读取数据
;****BEGIN****
LEA SI,SOURCE
LEA DI,RESULT
CLD
MOV CX,N
MOV BL,RATE 1
MOV BH,RATE2
AGAIN: (1)
CMP AL,DELTA
J (2) GREAT
MUL BL
JMP NEXT
GREAT: (3)
MUL BH
(4)
NEXT: (5)
(6)
INC SI
LOOP AGAIN
;****END****
LEA DX,RESULT&nb
时间:2023-10-02 12:04:42
-
假设某计算机具有1MB的内存,并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制(1)位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应(2)。若存储周期为200ns,且每个周期可访问4个字节,则该存储器带宽为(3)bps。假如程序员可用的存储空间为4MB,则程序员所用的地址为(4),而真正访问内存的地址为(5)。空白(5)处应选择()
A . A.指令地址
B . 物理地址
C . 内存地址
D . 数据地址
-
假设某计算机具有1MB的内存,并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制(1)位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应(2)。若存储周期为200ns,且每个周期可访问4个字节,则该存储器带宽为(3)bps。假如程序员可用的存储空间为4MB,则程序员所用的地址为(4),而真正访问内存的地址为(5)。空白(3)处应选择()
A . A.20M
B . 40M
C . 80M
D . 160M
-
同一片8259的8个中断源的中断向量在中断向量表中可以不连续存放。
A . 正确
B . 错误
-
假设某计算机具有1MB的内存,并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制(1)位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应(2)。若存储周期为200ns,且每个周期可访问4个字节,则该存储器带宽为(3)bps。假如程序员可用的存储空间为4MB,则程序员所用的地址为(4),而真正访问内存的地址为(5)。空白(4)处应选择()
A . A.有效地址
B . 程序地址
C . 逻辑地址
D . 物理地址
-
假设某计算机具有1MB的内存,并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制(1)位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应(2)。若存储周期为200ns,且每个周期可访问4个字节,则该存储器带宽为(3)bps。假如程序员可用的存储空间为4MB,则程序员所用的地址为(4),而真正访问内存的地址为(5)。空白(1)处应选择()
A . A.10
B . 16
C . 20
D . 32
-
实地址方式下,中断类型码为8的中断矢量从地址开始内存单元开始存放,共占个字节().
A . 00020H,2
B . 00010H,2
C . 00010H,4
D . 00020H,4
-
某文件共占用8个磁盘块B0~B7,磁盘每道有8个扇面,每个扇面可存放一个磁盘块,磁盘旋转一圈的时间是20ms,程序处理一个磁盘块的时间是4ms,B0~B7在一个磁道上优化分布,磁头目前在B0起点处。则把B0~B7全部读出的时间是()
A . 62.5ms
B . 60ms
C . 57.5ms
D . 55m
-
现代计算机通常是将处理程序存放在连续的内存单元中,CPU在执行这个处理程序时,使用一个寄存器来指示程序的执行顺序,这个寄存器为()。
A . 指令寄存器
B . 指令译码器
C . 指令缓冲寄存器
D . 指令指针寄存器
-
作业调度,其主要功能是根据一定的算法,从输人的一批作业中选出若干个作业,分配必要的资源,如内存、外设等,为它建立相应的用户作业进程和为其服务的系统进程,如输人、输出进程,最后把它们的程序和数据调人内存,等待进程调度程序对其执行调度,并在作业完成后作善后处理工作。
A . 正确
B . 错误
-
8259A的8个中断源的中断向量在中断向量表中可以不连续存放。
A . 正确
B . 错误
-
假设某计算机具有1MB的内存,并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制(1)位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应(2)。若存储周期为200ns,且每个周期可访问4个字节,则该存储器带宽为(3)bps。假如程序员可用的存储空间为4MB,则程序员所用的地址为(4),而真正访问内存的地址为(5)。空白(2)处应选择()
A . A.最低两位为00
B . 最低两位为10
C . 最高两位为00
D . 最高两位为10
-
有20个单字节的有符号数,存放在以内存NUM1单元为首地址的存储区中,要求将其取绝对值后,存人到以内存NUM2为首地址的存储区中。请填写下面程序,完成指定功能。 MOV SI,OFFSET NUM1;置源地址指针 MOV DI,OFFSET NUM2;置目的地址指针 MOV CX,() LP:MOV AL,() AND AL,() JNS() NEG() NEXT:MOV[DI],AL ()SI INC() LOOP() INT 3
-
已知某机器的指令集合及指令格式如下表示意。已经编制好并存储在存储器中的一段程序如下表示意,请阅读这段程序,并回答问题。存储器1号存储单元中存放的指令功能是__________。e48efcfac9867c9d153f0dd56ef1f5a4.png49fb643781706106c1daddad4bf0a92f.png
-
八位无符号数的表示范围为-128<=N<=127。()
是
否
-
下面程序功能是:从键盘输入数组a的各个元素,并以每行5个数据的形式输出数组中的所有元素。请填空。 include下面程序功能是:从键盘输入数组a的各个元素,并以每行5个数据的形式输出数组中的所有元素。请填空。 include define N 20 main(); }
-
编制一个程序,其功能是:计算内存中连续存放的20个字节无符号数据的相邻两个数据之间的和,并找出和的最大值,和的最大值存放在结果的最后一个字单元,和为字数据。
例如:
内存中有:20H,04H,58H,34H,35H,4DH……,
则结果为:0024H,008CH,0082H……
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要—条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
TRN OAD:FAR,SAVE:FAR
N EQU 10
SSEG SEGMENT TACK
B 256 DUP ()
SSEG NDS
DSEG EGMENT
SOURCE DB N*2 DUP ()
RESULT DW N+1 DUP (0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG DS
CSEG EGMENT
SSUME CS:CSEG,DS:DSEG,SS:SSEG
START PROC FAR
USH S
OR AX,AX
USH X
OV AX,DSEG
OV DS,AX
EA DX,SOURCE
EA SI,NAME0
OV CX,N*2
ALL GAD
; ******** BEGIN ********
EA SI, SOURCE
EA DI,RESULT
OV CX,N
AGAIN0: (1)
OV AL,[SI]
DD AL,[SI+1]
DC AH,0
OV [DI],AX
DD SI, (2)
(3)
OOP GAIN0
OV BX,N-1
OV SI,OFFSET RESULT
OV AX,[SI]
AGAIN1: ADD SI, 2
MP AX,[SI]
(4)
OV AX,[SI]
NEXT: DEC BX
NZ AGAIN1
(5)
; ******** END ********
EA DX,RESULT
EA SI,NAME1
OV CX,N+1
ALL AVE
ET
START ENDP
CSEG ENDS
END START
-
请编制程序,其功能是:内存中连续存放着16个10位二进制数DB9DB8…DB0,每个二进制数据均用两个字节表示,其存放格式均为:
<img src='https://img2.soutiyun.com/shangxueba/ask/10857001-10860000/10858746/ct_cshpcjm_chpcjprodesign_00005(200912).jpg' />
转换结果按原序存放在内存中。
例如:
内存中有:C048H,4091H,0080H,…
结果为: 23H,01H,45H,02H,00H,02H…
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算结果要求从 RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删除BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
[试题程序]
EXTRN LOAD:FAR,SAVE:FAR
N EQU 16
STAC SEGMENT STACK
DB 128 DUP()
STAC ENDS
DATA SEGMENT
SOURCE DW N DUP()
RESULT DB N*2 DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ; 数据区起始地址
LEA SI,NAME0 ; 原始数据文件名
MOV CX,N*2 ; 字节数
CALL LOAD ; 从"INPUT1.DAT"中读取数据
; ******** BEGIN ********
MOV DI,OFFSET RESULT
MOV BX,0
MOV CH,N
PRO: MOV AH,BYTE PTR SOURCE[BX]
MOV AL, (1)
MOV DL,AH ; 10 位无符号二进制数高八位
MOV DH,AL ; 10 位无符号二进制数低二位
MOV CL,2
SHL AX, (2)
SHL DX, (3)
MOV AL,DH
MOV [DI], (4)
MOV [DI+I], (5)
ADD DI,2
A
-
以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。
main()
{int x[10],a[9],I;
for (i=0;i<10;i++)
scanf(“%d”,&x[i]);
for(i=__;i<10;i++)
a[i-1]=x[i]+ x[i-1] ;
for(i=0;i<9;i++)
printf(“%d”,a[i]);
printf(“\n”);
-
8259a管理的8路外部中断向量存放在中断向量表中连续的32个字节中。()
是
否
-
程序Cmody052.c,其功能是实现从键盘依次输入M个整数,输出其中所有的偶数。请改正错程序中的错误。如输入:2362384526输出:623826
<img src='https://img2.soutiyun.com/ask/uploadfile/2019-03-27/36823dc03cf0f509cfc93125b0701d7d.jpg' />
-
请补全程序:比较片内RAM的50H和51H单元中两个8位无符号数的大小,把大数存入60H单元。若两数相等,则把标志位70H置“1”。 MOV A, 50H ________ A, 51H, LOOP ________ 70H RET LOOP: ________ LOOP1 MOV 60H, A RET LOOP1: MOV 60H, 51H RET (注意:答案之间用英文标点分号隔开,例如XX;YY;ZZ)
-
假定在一个程序中定义了变量x、y和i,其中,x和y是float型变量(用IEEE754单精度浮点数表示),i是16位short型变量(用补码表示)。程序执行到某一时刻,x=-130、y=7.25、问130,它们都被写到了主存(按字节编址),其地址分别是&x、&y和&i。请分别给出在大端机器和小端机器上变量x、y和i在内存的存放位置。
-
下列函数invert()的功能是:将数组a中n个元素逆序存放;请填空。
include
define N 10
void invert(int a[],int n)
{ int i=0,j=n-1-i;
while(______)
{int t;
t=a[i]______;a[j]=t;
i++;
______;
}
}
-
编制一个程序,其实现的功能为:将内存中从SOURCE开始的区域里存放的20个字节的压缩BCD码转换为ASCⅡ码,每个压缩的BCD码转换为两个ASCⅡ码,并在最高位加上奇校验位,结果存放到RESULT开始的内存区域。
例如:
内存中有:73H,45H……
则结果为:37H,B3H,34H,B5H……
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
EXTRN LOAD:FAR,SAVE:FAR
N EQU 20
DSEG SEGMENT
SOURCE DB N DUP()
RESULT DB N*2 DUP(0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP() SSEG ENDS CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DSEG
MOV DS,AX
LEA DX,SOURCE
LEA SI,NAME0
MOV CX,N
CALL LOAD
; ******** BEGIN ********
LEA SI,SOURCE
LEA DI,RESULT
MOV CX,N
AGAIN: MOV AL,[SI]
MOV AH,AL
(1)
AND AH,0FOH
(2)
MOV CL,4
(3)
POP CX
ADD AL,30H
(4) NEXT
OR AL,80H
NEXT: MOV [DI],AL
INC DI
ADD AH,30H
(5) NEXT1
OR AH,80H
NEXT1: MOV [DI],AH
INC DI
INC SI
LOOP AGAIN
; ******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N*2
CALL SAVE
RET
START ENDP
CSEG ENDS
END START