汇编语言基础试题(5)

2018-11-28 19:44

XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2

LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么? 答: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

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

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

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 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


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

下一篇:ROS是植物环境胁迫信号中最重要的物质

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

马上注册会员

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