微机原理及接口技术习题答案Word文件下载.docx

上传人:b****6 文档编号:19406458 上传时间:2023-01-06 格式:DOCX 页数:15 大小:32.58KB
下载 相关 举报
微机原理及接口技术习题答案Word文件下载.docx_第1页
第1页 / 共15页
微机原理及接口技术习题答案Word文件下载.docx_第2页
第2页 / 共15页
微机原理及接口技术习题答案Word文件下载.docx_第3页
第3页 / 共15页
微机原理及接口技术习题答案Word文件下载.docx_第4页
第4页 / 共15页
微机原理及接口技术习题答案Word文件下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

微机原理及接口技术习题答案Word文件下载.docx

《微机原理及接口技术习题答案Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理及接口技术习题答案Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。

微机原理及接口技术习题答案Word文件下载.docx

〔2〕MOVBX,VAR1[SI]正确。

存放器相对寻址,目的:

〔3〕MOVAX,[BX]正确。

存放器间接寻址,目的:

〔4〕MOVAL,[DX]错误。

存放器间接寻址时,DX,AX,CX不能作地址存放器

〔5〕MOVBP,AL错误。

操作数类型不一致

〔6〕MOVVAR1,VAR2错误。

两存储单元之间不能用MOV指令传送数据

〔7〕MOVCS,AX错误。

CS不能为目的操作数

〔8〕MOVDS,0100H错误。

目的操作数为段存放器时,源操作数不能为立即数

〔9〕MOV[BX][SI],1错误。

指令类型不定。

〔10〕MOVAX,VAR1+VAR2错误。

MOV指令中不能完成加法运算

〔11〕ADDAX,LENGTHVAR1正确。

立即数寻址。

目的:

〔12〕ORBL,TYPEVAR2正确。

〔13〕SUB[DI],78H错误。

指令类型不定

〔14〕MOVSVAR1,VAR2正确。

目的、源均为隐含寻址。

操作数仅指出操作数类型

〔15〕PUSH100H错误。

将常数压入堆栈,要通过存放器来实现

〔16〕POPCS错误。

目的操作数不能为CS

〔17〕XCHGAX,ES错误。

XCHG指令的操作数不能是段存放器

〔18〕MOVDS,CS错误。

MOV指令不能从段存放器到段存放器

〔19〕JMPL1+5正确。

段直接转移

〔20〕DIVAX,10错误。

指令格式错误。

〔21〕SHLBL,2错误。

移位指令的移位数为1或者CL

〔22〕MOVAL,15+23正确。

源:

立即数寻址,目的:

存放器。

编译时就处理为38

〔23〕MULCX正确。

存放器寻址,目的:

〔24〕XCHGCL,[SI]正确。

〔25〕ADCCS:

[0100],AH正确。

存放器寻址,目的:

直接寻址〔数据在代码段中〕

〔26〕SBBVAR1-5,154正确。

立即数寻址,目的:

直接寻址。

4.说明以下指令对的区别:

(1)MOVAX,VAR1与MOVAX,OFFSETVAR1

(2)MOVAX,VAR2与LEAAX,VAR2

(3)MOVAL,LENGTHVAR1与MOVAL,SIZEVAR1

(4)MOVAL,ES:

[DI]CMPAL,[SI]与CMPSB

(5)SHRAL,1与SARAL,1

(6)SHRAL,1与RORAL,1

(7)ROLBX,1与RCLBX,1

〔1〕MOVAX,VAR1把变量VAR1对应地址单元中的一个字送入AX

MOVAX,OFFSETVAR1把VAR1的有效地址的偏移地址送入AX

〔2〕MOVAX,VAR2把变量VAR2对应地址单元中的一个字送入AX

LEAAX,VAR2把VAR2的有效地址的偏移地址送入AX

〔3〕MOVAL,LENGTHVAR1把变量VAR1的长度送入AL

MOVAL,SIZEVAR1把变量VAR1的大小送入AL

〔4〕MOVAL,ES:

[DI]

CMPAL,[SI]把以ES为段地址,DI为偏移地址的一个字节送入AL,

并与以SI容为偏移地址的一个字节作比拟,改变标志寄

存器容。

〔相当于作ES:

〔DI〕与〔DS:

〔SI〕容比拟〕

CMPSB对字符串中的一字节比拟。

寻址方式隐含。

源串的地址由

DS:

SI指定,目的串的地址由ES:

DI指定。

〔相当于作

〔SI〕与ES:

〔DI〕容比拟〕

〔5〕SHRAL,1AL逻辑右移1位,最高位移入0,最低位移入CF。

SARAL,1AL算术右移1位,以最高位容移入,最低位移入CF,其余各位

右移一位。

〔6〕SHRAL,1AL逻辑右移1位,最高位移入0,最低位移入CF。

RORAL,1AL的各位构成环形移位,右移一位,最低位容同时移入到CF和

最高位。

〔7〕ROLBX,1BX各位构成环形移位,左移一位,最高位容同时移入到CF和

最低位。

RCLBX,1BX和CF构成环形移位,左移一位,CF容移入到最低位,最

高位移入CF。

5.写出以下转移指令的寻址方式〔设L1为标号,VAR1为字型变量,DVAR1为双字型变量〕:

〔1〕JMPL1〔2〕JMPNEARL1

〔3〕JNZL1〔4〕JMPBX

〔5〕JGL1〔6〕JMPVAR1[SI]

〔7〕JMPFARPTRL1〔8〕JMPDVAR1

〔1〕JMPL1段直接寻址〔2〕JMPNEARPTRL1段直接寻址

〔3〕JNZL1段直接寻址〔4〕JMPBX段间接寻址

〔5〕JGL1段直接寻址〔6〕JMPVAR1[SI]段间接寻址

〔7〕JMPFARPTRL1段间直接寻址〔8〕JMPDVAR1段间间接寻址

6.设〔DS〕=2000H,〔BX〕=0100H,〔SI〕=0002H,〔20100〕=3412H,〔20102〕=7856H,〔21200〕=4C2AH,〔21202〕=65B7H,求以下指令执行后AX存放器的容:

〔1〕MOVAX,1200H;

〔2〕MOVAX,BX;

〔3〕MOVAX,[1200H];

〔4〕MOVAX,[BX];

〔5〕MOVAX,1100[BX];

〔6〕MOVAX,[BX][SI];

〔7〕MOVAX,1100[BX][SI]

〔1〕1200H〔2〕0100H〔3〕4C2AH〔4〕3412H〔5〕4C2AH

〔6〕7856H〔7〕65B7H

7.执行以下指令后,DX存放器中的容是多少?

TABLEDW25,36,-1,-16,10000,13

PYLDW7

……

MOVBX,OFFSETTABLE

ADDBX,PYL

MOVDX,[BX]

DX=10FFH由-16〔FFF0H〕的高8位和10000〔2710H〕的低8位构成

8.如果堆栈的起始地址为2200:

0000,栈底为0100H,〔SP〕=00A8H,求

〔1〕栈顶地址;

〔2〕SS的容;

〔3〕再存入数据5678H,3AF2H后,SP的容。

栈顶地址00A8H,SS=2200H,再存入2个字后,SP=00A4H

9.设已用伪指令EQU定义了4个标识符:

N1EQU2100

N2EQU10

N3EQU20000

N4EQU25000

以下指令是否正确?

并说明原因。

〔1〕ADDAL,N1-N2;

〔2〕MOVAX,N3+N4;

〔3〕SUBBX,N4-N3;

〔4〕SUBAH,N4-N3-N1;

〔5〕ADDAL,N2;

〔6〕MOVAH,N2*N2

〔1〕错误。

N1-N2=2090>

255〔2〕正确〔3〕正确

〔4〕错误。

N4-N3-N1=2900>

255〔5〕正确〔6〕正确

10.按以下要求写出指令:

〔1〕将AX存放器的低4位清零,其余位不变;

〔2〕将BX存放器的低4位置1,其余位不变;

〔3〕将AL存放器的低4位保持不变,高4位取反;

〔4〕测试BX中的位1和位2,当这两位同时为0时将AL置0FFH,否那么AL清零;

〔5〕测试BX中的位1和位2,当这两位有一位为0时将AL置0FFH,否那么AL清零;

〔6〕将AL中保存的字母ASCII码变换成相应的大写字母的ASCII码;

〔7〕将AL中保存的字母ASCII码变换成相应的小写字母的ASCII码;

〔8〕将AX中的各位取反;

〔9〕将DX中的低7位取反,高9位不变;

〔10〕将CX中的低8位与高8位互换。

〔1〕ANDAX,0FFF0H

〔2〕ORBX,000FH

〔3〕XORAL,0F0H

〔4〕TESTBX,06H〔5〕MOVAX,BX

JZZEROANDAX,06H

MOVAL,00HXORAX,06H

JMPOVERJZOVER

ZERO:

MOVAL,0FFHMOVAL,0FFH

OVER:

OVER:

〔6〕ANDAL,5FH

或者:

CMPAL,61H

JLOVER〔无需变换或不是字母〕

CMPAL,7AH

JGOVER〔不是字母〕

ANDAL,5FH或SUBAL,20H

〔7〕ORAL,20H

CMPAL,41H

JLOVER〔不是字母〕

CMPAL,5AH

JGOVER〔无需变换或不是字母〕

ORAL,20H或ADDAL,20H

〔8〕XORAX,0FFFFH或者NOTAX

〔9〕XORDX,007FH

〔10〕XCHGCH,CL

11.写出完成下述功能的程序段:

〔1〕传送40H到AL存放器;

〔2〕将AL的容乘以2;

〔3〕传送16H到AH存放器;

〔4〕AL的容加上AH的容。

计算最后结果〔AL〕=?

〔1〕MOVAL,40H

〔2〕SHLAL,1

〔3〕MOVAH,16H

〔4〕ADDAL,AH

AL=96H

12.写出完成下述功能的程序段:

〔1〕从缓冲区BUF的0004偏移地址处传送一个字到AX存放器;

〔2〕将AX存放器的容右移2位;

〔3〕将AX容与BUF的0006偏移地址处的一个字相乘;

〔4〕相乘结果存入BUF的0020H偏移地址处〔低位在前〕。

〔1〕LEASI,BUF

MOVAX,[SI+4]

(2)SHRAX,1

SHRAX,1

(3)MULWORDPTR6[SI]

(4)MOV20H[SI],AX

MOV22H[SI],DX

13.设〔BX〕=11001011B,变量VAR的容为00110010B,求以下指令单独执行后BX的容:

〔1〕XORBX,VAR;

〔2〕ANDBX,VAR;

〔3〕ORBX,VAR;

〔4〕XORBX,11110000B;

〔5〕ANDBX,00001111B;

〔6〕TESTBX,1

〔1〕00F9H

〔2〕0002H

〔3〕00FBH

〔4〕003BH

〔5〕000BH

〔6〕00CBH

14.设〔DX〕=10111011B,〔CL〕=3,〔CF〕=1,求以下指令单独执行后DX的容:

〔1〕SHRDX,1;

〔2〕SARDX,CL;

〔3〕SHLDX,CL;

〔4〕SHLDX,1;

〔5〕RORDX,CL;

〔6〕ROLDL,CL;

〔7〕SALDH,1;

〔8〕RCLDX,CL;

〔9〕RCRDL,1

DX=0000000010111011BCF=1CL=3

〔1〕SHRDX,1DX逻辑右移10000000001011101B=005DH

〔2〕SARDX,CLDX算术右移30000000000010111B=0017H

〔3〕SHLDX,CLDX逻辑左移30000010111011000B=05D8H

〔4〕SHLDX,1DX逻辑左移10000000101110110B=0176H

〔5〕RORDX,CLDX循环右移30110000000010111B=6017H

〔6〕ROLDL,CLDL循环左移30000000011011101B=00DDH

〔7〕SALDH,1DH算术左移10000000010111011B=00BBH

〔8〕RCLDX,CLDX带进位循环左移30000010111011100B=05DCH

〔9〕RCRDL,1DL带进位循环右移10000000011011101B=00DDH

15.选择题〔各小题只有一个正确答案〕

〔1〕执行以下三条指令后:

MOVSP,1000H

PUSHAX

CALLBX

a.〔SP〕=1000H;

b.〔SP〕=0FFEH;

c.〔SP〕=1004H;

d.〔SP〕=0FFCH;

〔2〕要检查存放器AL中的容是否与AH一样,应使用的指令为:

a.ANDAL,AHb.ORAL,AH

c.XORAL,AHd.SBBAL,AH

〔3〕指令JMPNEARPTRL1与CALLL1〔L1为标号〕的区别在于:

a.寻址方式不同;

b.是否保存IP的容;

c.目的地址不同;

d.对标志位的影响不同。

〔1〕DPUSHUAX那么AX入栈,SP=0FFEH;

CALLBX那么IP入栈,SP=0FFCH

〔2〕C异或,假设一样,那么AL=0,ZF=1。

〔3〕B

16.存放器DX:

AX组成32位数,DX为高位,编写程序段实现:

〔1〕DX:

AX右移3位,并将移出的低3位保存在CL中;

〔2〕DX:

AX左移3位,并将移出的高3位保存在CL中;

〔1〕移出的3位应该按时序移入CL中。

XORCL,CL

MOVBL,3

L1:

SHRDX,1

RCRAX,1

RCLCL,1

DECBL

JNZL1

〔2〕移出的3位应该按时序移入CL中。

SHLAX,1

RCRDX,1

RCRCL,1

17.编写程序段实现将BL中的每一位重复4次,构成32位的双字DX:

AX,例如当BL=01011101B时,那么得到的〔DX〕=0F0FH,〔AX〕=0FF0FH。

算术右移时,移入的值就是最高位本身,这样可以使位容重复,利用这一点可以实现题目的要求。

XORDX,DX

XORAX,AX

MOVCX,4

SHRBL,1

RCRAX,1

SARAX,1

SARAX,1

LOOPL1

MOVCX,4

L2:

SHRBL,1

RCRDX,1

SARDX,1

SARDX,1

LOOPL2

18.字变量VAR1中保存有小于38250的16位无符号数,编写程序段实现VAR1÷

150,并进展四舍五入操作,将商保存在字节变量VAR2中。

根据题意,38250÷

150=255,因此商不会超过255,可以用一个字节表示。

b的四舍五入操作可以通过判断除后余数实现:

余数大于等于除数的一半,那么商加1;

否那么不用加1。

但这种方法用汇编语言编程实现时比拟复杂,这里介绍另外一种方法:

设a÷

b的四舍五入后的结果为c,用『』表示取整数操作,那么

这种方法是在除法操作之前,在被除数上加上除数的一半,这样除法操作后得到的值就是考虑了四舍五入的商。

VAR1DW12345

VAR2DB?

DATAADB150

MOVAX,VAR1

XORBX,BX

MOVBL,DATAA

SHRBX,1

ADDAX,BX

DIVDATAA

MOVVAR2,AL

19.有一组无符号的16位数据保存在BUFFER中,前两个字节存放数据的个数,编程实现按下式进展滤波处理:

滤波结果保存在FILT中。

BUFFERDW0CH

DW33H,18H,1BH,06H,33H,08H

DW3H,6H,0FH,51H,05H,0CH

FILTDW100HDUP〔?

LEASI,BUFFER

LEADI,FILT

MOVCX,[SI]

MOV[DI],CX

ADDSI,2

ADDDI,2

XORDX,DX

MOVAX,[SI]

MOV[DI],AX

MOVBX,2[SI]

MOV2[DI],BX

ADDSI,4

ADDDI,4

DECCX

ADCDX,0

MOVBX,3

ADDAX,[SI]

PUSHDX

PUSHAX

DIVBX

POPAX

POPDX

SUBAX,[SI-4]

SUBBDX,0

LOOPL1

20.在由字符串构成的缓冲区BUFFER中,前2个字节存放字符个数,后续每个字节存放一个字符的ASCII码。

编写程序实现将字符串‘2004’替换成‘2006’。

在数据段中定义:

BUFFERDW74

DB‘Thisyearis2004.In2004,wehaveaplanforreducingannualexpensive10%’

DESTDB‘2004’

在代码段中编写程序段:

CLD

LEADI,DEST

PUSHSI

PUSHDI

PUSHCX

MOVCX,4

REPZSCASB

JNZL2

MOVBYTEPTR[SI-1],’6’

POPCX

POPDI

POPSI

INCSI

INCDI

LOOPL1

21.定义有以下宏指令:

WAGSMACROS1,S2,S3

SUBAX,AX

MOVDX,AX

ADDAX,S1

ADDAX,S2

ADCDX,0

ADDAX,S3

ENDM

当采用宏调用指令“WAGS60000,25000,3000”时,执行后DX=AX=。

宏指令WAGS完成的功能为S1+S2+S3,结果放在DX:

AX中。

所以,调用“WAGS60000,25000,3000”时,其结果为DX=0001H,AX=57C0H

22.对上题定义的宏指令,如果采用宏调用指令“WAGSBX,CX,SI〞时,写出宏展开形式。

调用“WAGSBX,CX,SI〞时,宏展开形式:

SUBAX,AX

MOVDX,AX

ADDAX,CX

ADDAX,SI

23.写出宏指令SUMMING,实现将字节缓冲区array中的容求校验和〔保存低8位〕,并保存在VALUE中。

设array前两个字节保存缓冲区字节数,在宏指令SUMMING,将array和VALUE作为形式参数。

SUMMINGMACROarray,VALUE

LEASI,array

MOVCX,[SI]

ADDSI,2

XORAL,AL

ADDAL,[SI]

LOOPL1

MOVVALUE,AL

ENDM

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1