微机接口习题解答(3)

2019-04-21 16:45

11

错误,数据类型不匹配,可改为SUB AX,VAR1

(4) JMP LAB[SI]

错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI]

(5) JNZ VAR1

错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB

(6) JMP NEAR LAB

错误,缺少运算符PTR,可改为JMP NEAR PTR LAB

注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。 3.6 写出能够完成下列操作的8086CPU指令。

(1) 把4629H传送给AX寄存器; (2) 从AX寄存器中减去3218H; (3) 把BUF的偏移地址送入BX中。

【解答】

(1) MOV AX,4629H (2) SUB AX,3218H (3) LEA BX,BUF

3.7 根据以下要求写出相应的汇编语言指令。

(1) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;

(2) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;

(3) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;

(4) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;

(5) 把数25H与(AL)相加,结果送回寄存器AL中。 【解答】

(1) ADD DX,BX (2) ADD AL,[BX][SI] (3) ADD 21B5H[BX],CX

(4) ADD WORD PTR [2158H],3160H (5) ADD AL,25H

3.8 写出将首地址为BLOCK的字数组的第6个字送到CX寄存器的指令序列,要求分别使用以下几种寻址方式:

(1) 以BX的寄存器间接寻址 (2) 以BX的寄存器相对寻址 (3) 以BX、SI的基址变址寻址

【解答】

(1) LEA BX,BLOCK+10

MOV CX,[BX]

12

(2) LEA BX,BLOCK

MOV CX,10[BX]

(3) LEA BX,BLOCK

MOV SI,10 MOV CX,[BX][SI]

3.9 执行下列指令后,AX寄存器中的内容是什么?

TABLE DB 10,20,30,40,50 ENTRY DW 3 ??

MOV BX,OFFSET TABLE ADD BX,ENTRY MOV AX,[BX] AX=

【解答】AX= 3228H

3.10 下面是将内存一字节数据高4位和低4位互换并放回原位置的程序,找出错误并改正。

DATA SEGMENT

DD1 DB 23H DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

LEA SI,OFFSET DD1 MOV AL,[SI] MOV CL,4 RCR AL,CL MOV [SI],AL MOV AH,4CH INT 21H

CODE ENDS

END START

【解答】程序第8行错误:LEA SI,OFFSET DD1,应去掉OFFSET;

程序第10行错误:RCR AL,CL,应使用ROR或ROL,改为ROR AL,CL3.11 已知用寄存器BX作地址指针,自BUF所指的内存单元开始连续存放着3个无符号数字数据,编程序求它们的和,并将结果存放在这3个数之后。

【解答】参考程序如下:

LEA BX,BUF

MOV AX,[BX] ADD AX,[BX+2] ADD AX,[BX+4] MOV [BX+6],AX

3.12 分析汇编语言源程序应该由哪些逻辑段组成?各段的作用是什么?语句标号和变量应具备哪3种属性?

【解答】汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加

13

数据段,至少要有一个代码段。各段的作用如下:

(1)代码段用来存放程序和常数。 (2)数据段用于数据的保存。

(3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。 (4)附加数据段用于数据的保存。

语句标号和变量应具备的3种属性:段属性、偏移属性和类型属性。 3.13 执行完下列程序后,回答指定的问题。

MOV AX,0 MOV BX,2 MOV CX,50 LP:ADD AX,BX

ADD BX,2 LOOP LP

问:(1) 该程序的功能是 。

(2) 程序执行完成后,(AX)= 。 【解答】

(1)完成0到100间所有偶数求和的功能。 (2)2550

3.14 编写程序,计算下面函数的值。

(x?0)?2x?s??3x(0??x??10) ?4xx?10?【解答】

DATA SEGMENT X DW 34 S DW ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

MOV AX,X ;将X送到AX中 CMP AX,0 ;(AX)>0吗? JL DOUB ;是,转向doub

CMP AX,10 ;否,(ax)<10吗? JLE TRIB ;是,转向trib SAL AX,1 ;否,乘以4 SAL AX,1 JMP EXIT

DOUB: SAL AX,1 ;乘以2 JMP EXIT

TRIB: SAL AX,1 ;乘以3 ADD AX,X

EXIT: MOV S,AX ;保存结果

14

MOV AH,4CH ;结束 INT 21H CODE ENDS

END START

注意,在比较的过程中使用的是针对带符号数的跳转指令,χ应该看作带符号数。程序中还用了移位指令代替了乘法指令。

3.15 从键盘输入一系列字符,以回车符结束,编程统计其中非数字字符的个数。 【解答】

DATA SEGMENT

BLOCK DB 100 DUP (?) COUNT DB ? DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV DL,0

LEA SI,BLOCK LP: MOV AH,1 INT 21H

CMP AL,0DH JZ EXIT

MOV [SI],AL CMP AL,30H JAE NEXT CMP AL,39H JBE NEXT INC DL NEXT: INC SI JMP LP

EXIT: MOV COUNT,DL MOV AH,4CH INT 21H CODE ENDS

END START

3.16 已知在内存中从BLOCK单元起存放有20个带符号字节数据,统计其中负数的个数并放入COUNT单元。

【解答】

DATA SEGMENT

BLOCK DB -7,1,12,-90,-70,34,-1,56,45,-12 DB -3,-4,23,0,12,11,-9,-8,67,-56 CN EQU $-BLOCK COUNT DB ? DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV DL,0

LEA SI,BLOCK MOV CX,CN LP: MOV AL,[SI] TEST AL,80H JZ NEXT INC DL NEXT: INC SI LOOP LP

MOV COUNT,DL MOV AH,4CH INT 21H CODE ENDS

END START

15

3.17 从键盘输入一个大写英文字母,将其转换为小写字母并显示出来,要求输入其它字符时,能够有出错提示信息。

【解答】

DATA SEGMENT

MESS DB 'INPUP ERROR!',0AH,0DH,'$' DATA ENDS

CODE SEGMENT

ASSUME DS:DATA,CS:CODE START:MOV AX,DATA MOV DS,AX MOV AH,01H INT 21H

CMP AL,'A' JB ERR CMP AL,'Z' JA ERR

ADD AL,20H MOV DL,AL MOV AH,02H INT 21H JMP EXIT

ERR: MOV DX,OFFSET MESS MOV AH,09H INT 21H

EXIT: MOV AH,02H INT 21H CODE ENDS

END START

3.18 比较宏指令与子程序,它们有何异同?它们的本质区别是什么?

【解答】宏与子程序两者的相同之处在于都是用来处理在编程过程中多次使用的功能程序的方法,两者均能简化源程序。

两者的区别在于:

(1)宏调用通过宏指令名进行,汇编时,随时调用随时展开,并不简化目标程序;子程序调用是在程序执行期间执行CALL指令,代码只在目标程序中出现一次,所以也简化了目标程序。

(2)宏调用时的参数由汇编程序通过实参转换成形参的方式传递,具有很大的灵活性。宏定义中


微机接口习题解答(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018北京高考化学(含答案)

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

马上注册会员

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