汇编语言基础试题(5)

2018-12-20 10:29

答:S9 DB 1,0,3,2,5,4,7,6,9,8

三、用循环结构完成下列程序:(15分)

向存储器的十个连续单元写入1,2,3,4,5,6,7,8,9,10个数字。 参考答案:

DATA SEGMANT BUFFER DB 10 DUP(?)

VAR1 DB 1,2,3,4,5,6,7,8,9,10 COUNT DB 10 DATA ENDS

CODE SEGMANT

ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX LEA DI, BUFFER LEA SI, VAR1 MOV CH, 0

MOV CL, COUNT AGAIN:MOV AL, [DI] MOV [SI], AL INC DI INC SI

LOOP AGAIN CODE ENDS END START

四、编写一程序段统计数组ARY中负数的个数,并存入CONT单元中。(15分) 参考答案:

DATA SEGMENT

ARY DB 一1, 0, 3, 一6,7, 23,0,-50,3,1 CONT DB ? DATA ENDS MOV SI, 0 MOV BL, 0 MOV CX, 10 LOP:CMP ARY[SI], 0 JGE BIG INC BL BIG:INC SI LOOP LOP

MOV CONT, BL

五、编写一程序段,统计数据区BUF中0的个数,并存入RES单元。数据段为:(20分) DATA SEGMENT

21

BUF DB 0,5,0,3,2 RES DB ? DATA ENDS 参考答案: MOV CX,5

MOV SI,OFFSET BUF MOV BL,0

LOP:MOV AL,〔SI〕 CMP AL,0 JNE NEXT INC BL

NEXT:INC SI LOOP LOP MOV RES,BL

六、编程序(30分)

在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。 DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS 参考程序:

DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS

STACK1 SEGMENT PARA STACK DW 20H DUP(0) STACK1 ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA MOV DS,AX MOV CX,10 LEA SI,BUF1 LEA DI,BUF2 LEA BX,SUM

NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H JE TDX

22

NEG AX

TDX:TEST DX,8000H JE ADDS NEG DX

ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START

第十二章 过程

一、下面的程序段有错吗?若有,请指出错误。(25分) CRAY PROC PUSH AX ADD AX,BX RET ENDP CRAY 参考答案:

程序最后一行有错,应写成: CRAY ENDP

二、判断题(正确的画,错误的画)(共15分,每题5分) 1.寄存器传递参数法适合于参数较多的情况。(×) 2.用赋值法编写子程序时,子程序内必须修改返回地址。(√) 3.RET N指令中,N可为任意值。(×)

三、程序分析题(阅读程序段后给出答案)(共20分,每题10分) 1.

MOV AL,0FH MOV BL,10H CALL SUB1 INC AL DEC BL SUB1 PROC

ADD AL,BL XCHG AL,BL RET

23

SUB1 ENDP

上述程序段运行后,(AL)=( ),(BL)=( )。 答:(AL)=(11H),(BL)=(1EH)。 2.

MOV AL,38H MOV BL,49H CALL SUBO INC AL DEC CL

SUBO PROC ADD AL,BL MOV CL,AL DAA RET

SUBO ENDP

上述程序段运行后,(AL)=( ),(CL)=( ) 答:(AL)=(88H),(CL)=(80H)

四、简答题(共10分,每题5分)

在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 答:

(1)执行段内返回:

栈顶内容→IP,SP+2→SP (2)执行段间返回:

栈顶内容→IP,SP+2→SP 栈顶内容→CS,SP+2→SP

五、编写子程序题(20分)

编写一个子程序,完成两个非压缩型BCD数(每个数均不大于99)的加法。两个入口参数分别在AX,BX中,结果仍放在AX中。若结果大于99,则CF置1。 参考答案: 子程序为:

ADD_BCD PROC PUSH CX MOV CH,AH ADD AL,BL AAA

XCHG AL,CH ADC AL,BH AAA

MOV AH,AL

24

MOV AL,CH POP CX RET ADD_BCD ENDP

六、编程题(30分)

设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。要求子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)(结果不必输出)。其中数据段如下: DATA SEGMENT DAT DB -6

SQRTAB DB 0,1,4,9,16,25,36,49,64,81 SQR DB ? DATA ENDS 参考答案:

DATA SEGMENT DAT DB -6

SQRTAB DB 0,1,4,9,16,25,36,47,64,81 SQR DB ? DATA ENDS

STACK SEGMENT PARA STACK DW 20H DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CALL SUBROT MOV AH,4CH INT 21H SUBROT PROC PUSH AX PUSH BX

LEA BX,SQRTAB MOV AL,DAT TEST AL,80H JNS NEXT NEG AL

NEXT: XLAT SQRTAB MOV SQR,AL POP BX

25


汇编语言基础试题(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国人寿保险公司人力资源管理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: