微机原理与接口技术习题答案3.docx

上传人:b****8 文档编号:12894689 上传时间:2023-06-09 格式:DOCX 页数:19 大小:33.49KB
下载 相关 举报
微机原理与接口技术习题答案3.docx_第1页
第1页 / 共19页
微机原理与接口技术习题答案3.docx_第2页
第2页 / 共19页
微机原理与接口技术习题答案3.docx_第3页
第3页 / 共19页
微机原理与接口技术习题答案3.docx_第4页
第4页 / 共19页
微机原理与接口技术习题答案3.docx_第5页
第5页 / 共19页
微机原理与接口技术习题答案3.docx_第6页
第6页 / 共19页
微机原理与接口技术习题答案3.docx_第7页
第7页 / 共19页
微机原理与接口技术习题答案3.docx_第8页
第8页 / 共19页
微机原理与接口技术习题答案3.docx_第9页
第9页 / 共19页
微机原理与接口技术习题答案3.docx_第10页
第10页 / 共19页
微机原理与接口技术习题答案3.docx_第11页
第11页 / 共19页
微机原理与接口技术习题答案3.docx_第12页
第12页 / 共19页
微机原理与接口技术习题答案3.docx_第13页
第13页 / 共19页
微机原理与接口技术习题答案3.docx_第14页
第14页 / 共19页
微机原理与接口技术习题答案3.docx_第15页
第15页 / 共19页
微机原理与接口技术习题答案3.docx_第16页
第16页 / 共19页
微机原理与接口技术习题答案3.docx_第17页
第17页 / 共19页
微机原理与接口技术习题答案3.docx_第18页
第18页 / 共19页
微机原理与接口技术习题答案3.docx_第19页
第19页 / 共19页
亲,该文档总共19页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理与接口技术习题答案3.docx

《微机原理与接口技术习题答案3.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题答案3.docx(19页珍藏版)》请在冰点文库上搜索。

微机原理与接口技术习题答案3.docx

微机原理与接口技术习题答案3

第3章8086CPU指令系统

1.写出完成以下要求的变量定义语句:

〔1〕在变量var1中保存6个字变量:

4512H,4512,-1,100/3,10H,65530;

〔2〕在变量var2中保存字符串:

’BYTE’,’word’,’WORD’;

〔3〕在缓冲区buf1中留出100个字节的存储空间;

〔4〕在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;

〔5〕在变量var3中保存缓冲区buf1的长度;

〔6〕在变量pointer中保存变量var1和缓冲区buf1的偏移地址。

解:

var1DW4512H,4512,-1,100/3,10H,65530

var2DB’BYTE’,’word’,’WORD’

buf1DB100DUP〔?

buf2DB7DUP〔5DUP〔55H〕,10DUP〔240〕〕

var3DBLENGTHbuf1

pointerDWvar1,buf1〔或者pointerDWOFFSETvar1,OFFSETbuf1〕

2.设变量var1的逻辑地址为0100:

0000,画出以下语句定义的变量的存储分配图:

var1DB12,-12,20/6,4DUP〔0,55H〕

var2DB‘Assemble’

var3DW‘AB’,‘cd’,‘E’

var4DWvar2

var5DDvar2

解:

3.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因〔设VAR1,VAR2为字变量,L1为标号〕:

〔1〕MOVSI,100〔2〕MOVBX,VAR1[SI]

〔3〕MOVAX,[BX]〔4〕MOVAL,[DX]

〔5〕MOVBP,AL〔6〕MOVVAR1,VAR2

〔7〕MOVCS,AX〔8〕MOVDS,0100H

〔9〕MOV[BX][SI],1〔10〕MOVAX,VAR1+VAR2

〔11〕ADDAX,LENGTHVAR1〔12〕ORBL,TYPEVAR2

〔13〕SUB[DI],78H〔14〕MOVSVAR1,VAR2

〔15〕PUSH100H〔16〕POPCS

〔17〕XCHGAX,ES〔18〕MOVDS,CS

〔19〕JMPL1+5〔20〕DIVAX,10

〔21〕SHLBL,2〔22〕MOVAL,15+23

〔23〕MULCX〔24〕XCHGCL,[SI]

〔25〕ADCCS:

[0100],AH〔26〕SBBVAR1-5,154

解:

〔1〕MOVSI,100正确。

源:

立即数寻址,目的:

寄存器寻址

〔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指定。

〔相当于作

DS:

〔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

OVER:

〔7〕ORAL,20H

或者:

CMPAL,41H

JLOVER〔不是字母〕

CMPAL,5AH

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

ORAL,20H或ADDAL,20H

OVER:

〔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中。

XORCL,CL

MOVBL,3

L1:

SHLAX,1

RCRDX,1

RCRCL,1

DECBL

JNZL1

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

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

解:

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

XORDX,DX

XORAX,AX

MOVCX,4

L1:

SHRBL,1

RCRAX,1

SARAX,1

SARAX,1

SARAX,1

LOOPL1

MOVCX,4

L2:

SHRBL,1

RCRDX,1

SARDX,1

SARDX,1

SARDX,1

LOOPL2

18.字变量VAR1中保存有小于38250的16位无符号数,编写程序段实现VAR1÷150,并进行四舍五入操作,将商保存在字节变量VAR2中。

解:

根据题意,38250÷150=255,因此商不会超过255,可以用一个字节表示。

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

DECCX

ADDAX,BX

ADCDX,0

MOVBX,3

L1:

ADDAX,[SI]

ADCDX,0

PUSHDX

PUSHAX

DIVBX

MOV[DI],AX

POPAX

POPDX

SUBAX,[SI-4]

SUBBDX,0

ADDDI,2

ADDSI,2

LOOPL1

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

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

解:

在数据段中定义:

BUFFERDW74

DB‘Thisyearis2004.In2004,wehaveaplanforreducingannualexpensive10%’

DESTDB‘2004’

在代码段中编写程序段:

CLD

LEASI,BUFFER

MOVCX,[SI]

ADDSI,2

LEADI,DEST

L1:

PUSHSI

PUSHDI

PUSHCX

MOVCX,4

REPZSCASB

JNZL2

MOVBYTEPTR[SI-1],’6’

L2:

POPCX

POPDI

POPSI

INCSI

INCDI

LOOPL1

21.定义有以下宏指令:

WAGSMACROS1,S2,S3

SUBAX,AX

MOVDX,AX

ADDAX,S1

ADDAX,S2

ADCDX,0

ADDAX,S3

ADCDX,0

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

ADDAX,CX

ADCDX,0

ADDAX,SI

ADCDX,0

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

解:

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

SUMMINGMACROarray,VALUE

LEASI,array

MOVCX,[SI]

ADDSI,2

XORAL,AL

L1:

ADDAL,[SI]

INCSI

LOOPL1

MOVVALUE,AL

ENDM

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2