写出完成如下功能的指令。 (1)BX和AX内容相加,结果存入AX。 (2)把AL寄存器的内容与数OAOH相减,结
写出完成如下功能的指令。 (1)BX和AX内容相加,结果存入AX。 (2)把AL寄存器的内容与数OAOH相减,结果存入AL。 (3)用BX寄存器间接寻址方式把存储器中的一个字和DX相加,结果存入DX。 (4)用SI和位移量0020H的寄存器相对寻址方式把内存中的一个字和AX相加,结果存入AX。
写出完成如下功能的指令。 (1)BX和AX内容相加,结果存入AX。 (2)把AL寄存器的内容与数OAOH相减,结果存入AL。 (3)用BX寄存器间接寻址方式把存储器中的一个字和DX相加,结果存入DX。 (4)用SI和位移量0020H的寄存器相对寻址方式把内存中的一个字和AX相加,结果存入AX。
已知:(AX)=01CDH,(BX)=0AFH,(CX)=0BE02H,CF=1,写出单步执行每条指令时CF、ZF及相关寄存器的内容。
TEST AX,BX ;AX=______H,BX=______H
;CF=______,ZF=_____
ROL BX,CL ;(BX)=______H,(CL)=______H
试题要求如下:
请编制程序,其功能是:统计20个学生成绩中得分在100~90,89~80,79~70、69~ 60和低于60分的人数,并计算20个学生的平均成绩(取整数),结果依次存放在指定的区域内。
例如:
内存中有5个分数:50H,40H,5EH,64H,48H
结果为 02H,01H,01H,01H,00H,52H(平均成绩)
部分程序己给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,运算的结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。补充BEGIN和END之间已给出的源程序使其完整(空白己用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序进行汇编,并与IO.OBJ链接产生执行文件,最终运行程序产生结果。调试中发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD: FAR, SAVE: FAR
N EQU 20
L EQU 5
DATA SEGMENT
SOURCE DB N DUP()
RESULT DB N+1DUP(0)
NAME0 DB 'INPUT 1.DAT', 0
NAME1 DB 'OUTPUT1.DAT', 0
DATA ENDS
SSEG SEGMENT STACK
DB 256DUP ()
SSEG ENDS
CSEG SEGMENT
ASSUME CS: CSEG, SS: SSEG, DS: DATA
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
XOR BX, BX
(1)
MOV CX, N
GOON: LODSB
(2)
ADD BX, AX
(3)
JAE P1
CMP AL, 80
JAE P2
CMP AL, 70
JAE P3
CMP AL, 60
JAE P4
INC (4)
(5)
P4: INC BYTE PTR[DI+3]
JMP NEXT
P3: INC BYTE PTR[DI+2]
JMP NEXT
P2: INC BYTE&n
若要完成(AX)×7/2运算,则在下列4条指令之后添加()指令。 MOV BX,AX MOV CL,3 SAL AX,CL SUB AX,BX __________
A.ROR AX,1
B.SAL AX,1
C.SAR AX,1
D.DIV AX,2
若要完成(AX)×7/2运算,则在下面四条指令之后添加哪条指令? MOV BX,AX MOV CL,3 SAL AX,CL SUB AX,BX _______
A.OR AX,1
B.SAL AX,1
C.SAR AX,1
D.DIV AX,2
要完成(AX)× 7/2运算,则在下列四条指令之后添加哪条指令?() MOV BX, AX MOV CL, 3 SAL AX, CL SUB AX, BX
A.ROR AX,1
B.SAL AX,1
C.SAR AX,1
D.DIV AX,2
若要完成(AX)×7/2运算,则在下列4条指令之后添加()指令。MOV BX,AXMOV CL,3SAL AX,CLSUB AX,BX__________
A.ROR AX,1
B.SAL AX,1
C.SAR AX,1
D.DIV AX,2
例如:
内存中有:3456H,2345H,5643H,…(假设后面的7个数都大于5643H)
结果为: 2345H,3456H,5643H,…(后面跟7个字,按照从小到大的顺序排列)。
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUTDAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令亦可,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
[试题程序]
EXTRN LOAD:FAR,SAVE:FAR
N EOU 10
SSEG SEGMENT STACK
DB 256 DUP ()
SSEG ENDS
DSEG SEGMENT
SOURCE DW N DUP ()
RESULT DW N DUP (0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG 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*2
CALL LOAD
; ******** BEGIN ********
MOV SI,OFFSET SOURCE
MOV DI, (1)
MOV CX,N
AGAIN0: MOV AX,[SI]
MOV [DI],AX
ADD SI,2
ADD DI,2
LOOP AGAIN0
CLD
MOV BX,N-1
AGAIN1: MOV SI,OFFSET RESULT
MOV CX,BX
AGAIN2: LODSW
CMP [SI], (2)
JAE NEXT
(3)
MOV [SI-2],AX
NEXT: LOOP (4)
DEC BX
JNZ (5)
; ******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N*2
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
例如:
内存中有:3EH,0FEH,5DH……(假设后面的7个数都小于3EH)
结果为: 0FEH,5DH,3EH……(后面跟7个字,按照从大到小的顺序排列)。
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT.DAT中读入以SOURCE开始的内存单元中。运算结果要求从RESULT开始的内存单元存放,由过程SAVE保存到文件OUTPUT.DAT中。
请填空BEGIN和END之间已给出的源程序使其完整,空白已经用横线标出,每行空白一般只需要一条指令,但采用功能相当的多条指令也行,考生也可以删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
【试题程序】
EXTRN LOAD:FAR,SAVE:FAR
N EQU 10
SSEG SEGMENT STACK
DB 256 DUP ()
SSEG ENDS
DSEG SEGMENT
SOURCE DB N DUP ()
RESULT DB N DUP (0)
NAME0 DB 'INPUT.DAT',0
NAME1 DB 'OUTPUT.DAT',0
DSEG 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 ********
MOV SI,OFFSET SOURCE
MOV DI,OFFSET RESULT
MOV CX,N
AGAIN0: MOV AX, [SI]
MOV [DI],AX
ADD SI, (1)
(2)
LOOP AGAIN0
CLD
MOV BX,N-1
AGAIN1: MOV SI,OFFSET RESULT
MOV CX,BX
AGAIN2: LODSB
CMP [SI],AX
(3)
XCHG [SI],AX
(4)
NEXT: LOOP AGAIN2
(5)
JNZ AGAIN1
;******** END ********
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
请编制程序,其功能为:已知斐波那契(Fibonacci)数0,1,1,2,3,5,8,13……这些数的关系是:从第三项开始,每项都是它前面两项之和。若用ai表示第i项,则有a1=0、a2=1、 ai=ai-1+ai-2(i≥3)。试求出第24个斐波那契数,存放在RESULT开始的内存单元中。
部分程序已经给出,其中原始数据由LOAD过程从文件INPUT1.DAT中读入从SOURCE开始的内存单元,运算结果要求从RESULT开始存放,由SAVE过程保存到OUTPUT1.DAT文件中。请在BEGIN和END之间补充使其完整,完成要求的功能。或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终产生运行结果。
部分程序如下:
; PROG1.ASM
EXTRN LOAD:FAR, SAVE:FAR
N EQU 1
DSEG SEGMENT
SOURCE DW N DUP ()
RESULT DW N DUP (0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DSEG ENDS
SSEG SEGMENT STACK
DB 128 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 ***
MOV AX,______
MOV BX, 1
_____________
L1: _____________
_____________
_____________
MOV [RESULT],BX
; *** END ***
LEA DX,RESULT
LEA SI,NAME1
MOV CX,N
CALL SAVE
RET
START ENDP
CSEG ENDS
END START
例如:
部分程序已经给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,转换结果要求从RESULT开始存放,由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的一段原程序使其完整,需填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数),也可以填入功能相当的多条指令,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ连接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
[试题程序]
EXTRN LOAD:FAR,SAVE:FAR
N EQU 40
STAC SEGMENT STACK
DB 128 DUP ()
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP(0)
RESULT DB N+2 DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
NDATA DB N DUP(0)
PDATA DB N DUP(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
MOV ES,AX ;置附加段寄存器
LEA DX,SOURCE ;数据区起始地址
LEA SI,NANE0 ;原始数据文件名
MOV CX,N ;字节数
CALL LOAD ;从'INPUT1.DAT'中读取数据
**********BEGIN**********
LEA SI,RESULT
(1) DI,OFFSET PDATA ;PDATA为正数数组存放缓冲区首址
NOV BX,OFFSET NDATA ;NDATA为负数数组存放缓冲区首址
XOR DX,DX
MOV CX,N
CLD
MAIN1: LODSB
TEST AL, (2)
Z MAIN2
NC DH
OV [BX],AL
NC BX
(3)
MAIN2: INC DL
OV [DI],AL
NC DI
NAIN3: (4) NAIN1
EA SI,PDATA
A DI,RESULT
OV [DI],DL
NC&nb
例如:
内存中有:30H('0'),39H('9'),31H('1')…
结果为:00H,09H,01H…(最后为M)
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从RESULT开始存放,由过程SAVE保存到文件 OUTPUT1.DAT中。
填空BEGIN和END之间已给出的一段源程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可),或删除BEGIN和END之间原有的代码并自行编程来完成要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生PROG1.EXE执行文件,最终运行程序产生结果(无结果或结果不正确者均不得分)。调试中若发现整个程序中存在错误之处,请加以修改。
试题程序:
EXTRN LOAD:FAR, SAVE:FAR
N EQU 10
STAC SEGMENT STACK
DB 128 DUP()
STAC ENDS
DATA SEGMENT
SOURCE DB N DUP()
RESULT DB N+1 DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,S S: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****
MOV DI,OFFSET RESULT
MOV BX,0
MOV CX,N
MOV DL, (1)
PRO: MOV AL,SOURCE[BX]
(2) AL,3 OH
MOV [DI],AL
(3)
ADD AL,DL
(4)
MOV DL.AL
INC BX
(5)
JNZ PRO
(6)
;****END****
LEA DX,RESULT ; 结果数据区首址
LEA SI,NAME1 ; 结果文件名
MOV CX,N+1 ; 字节数
CALL SAVE ; 保存结果到文件
RET
START ENDP
CODE ENDS
END START