微机原理作业答案整理版Word文件下载.docx

上传人:b****5 文档编号:18903493 上传时间:2023-01-02 格式:DOCX 页数:37 大小:201.12KB
下载 相关 举报
微机原理作业答案整理版Word文件下载.docx_第1页
第1页 / 共37页
微机原理作业答案整理版Word文件下载.docx_第2页
第2页 / 共37页
微机原理作业答案整理版Word文件下载.docx_第3页
第3页 / 共37页
微机原理作业答案整理版Word文件下载.docx_第4页
第4页 / 共37页
微机原理作业答案整理版Word文件下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

微机原理作业答案整理版Word文件下载.docx

《微机原理作业答案整理版Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机原理作业答案整理版Word文件下载.docx(37页珍藏版)》请在冰豆网上搜索。

微机原理作业答案整理版Word文件下载.docx

0E65DH(16进制首位是字母则前加0)

2.3段地址和偏移地址为1000H:

117AH的存储单元的物理地址是什么?

而1109H:

00EAH或1025H:

0F2AH的存储单元的物理地址又是什么?

这说明了什么问题?

物理地址=段地址×

10H+偏移地址

1000H:

117AH存储单元的物理地址1000H×

10H+117AH=1117AH

1109H:

00EAH存储单元的物理地址1109H×

10H+00EAH=1117AH

1025H:

0F2AH存储单元的物理地址1025H×

10H+0F2AH=1117AH

说明:

存储单元的物理地址唯一,逻辑地址不唯一;

2.5如果从存储器的2000H地址开始分配段区,要求数据段占用1KB范围,堆栈段占用512B范围,代码段占用8KB范围。

按数据段、堆栈段和代码段的顺序连续存放,试画出存储器分段地址分配示意图,图中应写明各段寄存器的内容?

02000H

1KB

DS:

0200

02400H

512B

SS:

0240H

02600H

8KB

CS:

0260H

注:

1KB=2^10=10000000000B=400H

SS:

起始物理地址2000H+1KB=2000H+400H=02400H

512B=2^9=1000000000B=200H

CS:

起始物理地址2400H+512B=2400H+200H=02600H

2.7现有DS=2000H,BX=0100H,SI=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各指令执行完后AX寄存器的内容。

题号

指令

AX寄存器的内容

简单解释

(1)

MOVAX,1200H

1200H

立即数赋给AX

(2)

MOVAX,BX

0100H

寄存器BX值赋给AX

(3)

MOVAX,[1200H]

4C2AH

PA=DS×

16+1200H=21200H

(4)

MOVAX,[BX]

3412H

16+BX=20100H

(5)

MOVAX,1100H[BX]

16+BX+1100H=21200H

(6)

MOVAX,[BX][SI]

7856H

16+BX+SI=20102H

(7)

MOVAX,1100H[BX][SI]

65B7H

16+BX+SI+1100H=21202H

2.8假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据段中变量名VAL的偏移地址值为0050H,试指出下面源操作数字段的寻址方式是什么?

其物理地址值是多少?

源操作数的寻址方式

源操作数的物理地址

MOVAX,00ABH

立即寻址

在代码段中,与CS、IP有关

寄存器寻址

在寄存器中

MOVAX,[100H]

直接寻址

DS×

10H+100H=20100H

寄存器间接寻址

10H+BX=20100H

MOVAX,[BP]

SS×

10H+BP=15010H

MOVAX,[BX+10]

带位移的基址寻址

10H+BX+10=2010AH

基址变址寻址

10H+BX+SI=201A0H

(8)

MOVAX,VAL

10H+VAL=20050H

(9)

MOVAX,ES:

[BX]

ES×

10H+BX=21100H

(10)

MOVAX,[SI]

10H+SI=200A0H

(11)

MOVAX,VAL[BX]

10H+BX+VAL=20150H

(12)

MOVAX,VAL[BX][SI]

带位移的基址变址寻址

10H+BX+SI+VAL=201F0H

2.9设AX=1122H,BX=3344H,CX=5566H,SP=2000H,试分析下列程序段执行后,AX、BX、CX、SP中的内容各为多少?

并画出堆栈变化示意图。

第1条指令

AX=1122H

PUSHAX

BX=3344H

SP→

22H

CX=5566H

11H

SP=1FFEH

第2条指令

PUSHBX

44H

33H

SP=1FFCH

第3条指令

PUSHCX

66H

55H

SP=1FFAH

第4条指令

POPAX

AX=5566H

第5条指令

POPCX

CX=3344H

2.10下列程序段中每一条指令执行完后,AX中的十六位进制内容是什么?

AX中的内容

MOVAX,0

AX=0000H

DECAX

AX=0FFFFH

DEC:

减一操作

ADDAX,7FFFH

AX=7FFEH

FFFF+7FFF=17FFEH,溢出得7FFEH

ADDAX,2

AX=8000H

NOTAX

AX=7FFFH

NOT:

逻辑非指令,原AX=100000000000B,逻辑非后(位取反):

AX=011111111111B=7FFFH

SUBAX,0FFFFH

减FFFFH相当于加其不码“1”

ADDAX,8000H

溢出

ORAX,0BFDFH

AX=0BFDFH

OR:

或指令;

ANDAX,0EBEDH

AX=0ABCDH

AND:

与指令

XCHGAH,AL

AX=0CDABH

高低位互换

SALAX,1

AX=9B56H(CF=1,PF=1)

0CDABH=1100110110101011左移1位后1001101101010110=9B56H

RCLAX,1

AX=36ADH(CF=1,PF=1,OF=1)

1001101101010110带进位循环左移

循环移位指令不影响除CF和OF以外的其他条件标志。

移位指令根据移位后的结果设置SF、ZF和PF位,AF位则无定义。

RCL:

OF=1最高有效位的值发生变化;

PF保留原来的值;

2.11将十六进制数62A0H与下列各个数相加,试给出和数及标志位AF,SF,ZF,CF,OF和PF的状态。

(1)9D60H(AF:

辅助进位标志位—做加法时D3位有进位或做减法时D3位有结借位则AF=1)

和数:

0H

AF=0,SF=0,ZF=1,CF=1,OF=0,PF=1

(2)4321H

0A5C1H

AF=0,SF=1,ZF=0,CF=0,OF=1,PF=0

2.12从下列各个数中减去4AE0H,试给出差值及标志位AF,SF,ZF,CF,OF和PF的状态。

(1)1234H

(2)9090H

AF=0,SF=1,ZF=0,CF=1,OF=0,PF=0

AF=0,SF=0,ZF=0,CF=0,OF=1,PF=0

2.13假设BX=00E3H,字变量VALUE中存放的内容为79H,确定下列各条指令单独执行后的结果。

BX内容

XORBX,VALUE

009AH

0000000011100011XOR0000000001111001

ANDBX,VALUE

0061H

0000000011100011AND0000000001111001

ORBX,VALUE

00FBH

0000000011100011OR0000000001111001

XORBX,0FFH

001CH

0000000011100011XOR0000000011111111

ANDBX,0

0000H

TESTBX,01H

00E3H

TEST指令只影响标志位,不影响结果

2.15假定DX=00B9H,CL=3,CF=1,确定下列各条指令单独执行后DX中的值。

SHR:

逻辑右移(无符号除以2);

SAR:

算术右移(有符号除以2)(详解见复习笔记第一页)

DX寄存器的内容

SHRDX,1

005CH

00B9H=0000000010111001B逻辑右移

SARDX,CL

0017H

00B9H=0000000010111001B算术右移

SHLDX,CL

05C8H

00B9H=0000000010111001B逻辑左移

SHLDL,1

0072H

B9H=10111001B逻辑左移

RORDX,CL

2017H

00B9H=0000000010111001B循环右移

ROLDL,CL

00CDH

B9H=10111001B循环左移

SALDH,1

00B9H

DH=0算术左移

RCLDX,CL

05CCH

00B9H=0000000010111001B带进位循环左移

RCRDL,1

00DCH

B9H=10111001B带进位循环右移

第3章宏汇编语言程序设计

3.1对于下面的数据定义,各条指令单独执行后,有关寄存器的内容是什么?

FLDBDB?

TABLEADW20DUP(?

TABLEBDB'

ABCD'

格式:

TYPE变量或标号功能:

计算变量或标号的类型值

DB、DW、DQ、DT定义变量、字变量、双字变量、长字变量、10字节变量对应类型值分别是1、2、4、8、10;

NEAR、FAR型标号对应的类型值分别是:

-1(FFH)、-2(FEH);

(1)MOVAX,TYPEFLDB;

AX=01H;

字节类型

(2)MOVAX,TYPETABLEA;

AX=02H;

字类型

(3)MOVCX,LENGTHTABLEA;

CX=14H;

DUP定义的变量,分配的单元数

(4)MOVDX,SIZETABLEA;

DX=28H;

SIZE=LENGTH*TYPE本题中即:

size=20*2=40=28H

(5)MOVCX,LENGTHTABLEB;

CX=01H;

非DUP定义的变量,LENGTH=1

3.2试写出完成下列操作的伪指令语句:

(1)将56H,78,B3H,100存放在定义为字节变量ARRAY的存储单元中。

ARRAYDB56H,78,0B3H,100

(2)将字数据2965H,45H,2965,A6H存放在定义为字变量DATA的存储单元中。

DATADW2965H,45H,2965,0A6H

(3)将字节数据56H,C6H,78H,12H存放在字变量ALPHA的存储单元中,并且不改变数据按字节存储的次序。

ALPHADW0C656H,1278H

(4)在BETA为首址的存储单元中连续存放字节数据,2个23,5个'

A'

,10个(1,2),20个空单元。

BETADB2DUP(23),5DUP('

),10DUP(1,2),20DUP(?

(5)在STRING为首址的存储单元中存放字符串'

THISISAEXAMPE'

STRINGDB'

(6)用符号COUNT替代100。

COUNTEQU100(或COUNT=100)

3.3画图表示下列语句中数据在存储器中的存储情况。

(1)BYTE_VARDB'

76,57H,3DUP(?

),2DUP(1,3)

(2)WORD_VARDW5DUP(0,1),?

'

AB'

CD'

7965=1F1DH。

(1)从左到右、从上到下为地址增大的方向。

41H

42H

43H

44H

4CH

57H

?

01H

03H

(2)从左到右、从上到下为地址增大的方向。

00

01

42

41

44

43

1D

1F

3.5假设程序中的变量定义如下:

BUF1DB100DUP('

BUF2DW1275H,567,0C5H

BUF3DB20DUP(?

BUF4DB7,4,6,9,8

(1)用一条指令将BUF1的偏移地址送入BX。

MOVBX,OFFSETBUF1或LEABX,BUF1

(2)将BUF2的第三字节数据送入CL。

MOVCL,BUF2+2

(3)将A6H送入BUF3的第十个字节单元中。

MOVBUF3+9,0A6H

(4)用伪指令写出BUF1和BUF2二者的总长度(字节数)

COUNTEQUBUF3-BUF1

3.7下列语句中,在存储器中每个变量分配到多少字节?

VR1DW9;

2字节

VR2DW4DUP(?

),2;

4*2+2=10字节

VR3EQU100;

0字节

VR4DDVR3DUP(?

);

100*4=400字节

VR5DB2DUP(?

VR3DUP(0,1));

2*(1+100*2)=402字节

VR6DB'

HOWAREYOU?

'

;

12字节

哭!

~哭也算时间哦!

---空字符!

~空字符也算字节哦!

3.8试写出一个完整的数据段DATA_SEG,首先把10个压缩的BCD码29存放在ARRAY变量字节单元中,紧接着把-25,4,10,76,3存放在ALPHA数组变量的字单元中,接着留100个空单元作为工作单元用,它定义为字节变量BUFFER。

DATA_SEGSEGMENT

ARRAYDB10DUP(29H)

ALPHADW-25,4,10,76,3

BUFFERDB100DUP(?

DATA_SEGENDS

3.9将存放在字节变量BCD1中的两个十进制数的ASCII码合并为一字节压缩型BCD码,存入字节变量BCD2,试编写程序。

(看不懂!

DATASEGMENT(蓝字为固定结构)

BCD1DB'

34'

BCD2DB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,BCD1

MOVCL,4

SALAL,CL

MOVBL,BCD1+1

ANDBL,0FH

ORAL,BL

MOVBCD2,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

3.12编写程序,计算Z=((W–X)/10*Y)2,r为相除所得余数。

其中W,X,Y均为8位有符号二进制数。

(懒得看!

DATASEGMENT

WDB12

XDB24

YDB48

ZDW2DUP(?

rdb?

MOVAL,W

SUBAL,X;

W-X->

AL

CBW

MOVBL,10

IDIVBL;

(W-X)/10->

MOVr,AH;

(W-X)%10->

r

MOVBL,Y

IMULBL;

(W-X)/10*Y->

AX

MOVBX,AX

IMULBX;

((W-X)/10*Y)^2->

DX,AX

MOVZ,AX

MOVZ+2,DX;

Z

3.15有两个压缩型BCD码相加,被加数(6756)和加数(7321)存放在数据段的BUFFER变量的4个连续的字节存储单元中,结果(和)存放在RESUT变量的三个字单元中(考虑到有进位的情况),编制具有数据段和代码段结构的完整程序,程序中需要作必要的注释。

结果存放在RESUT字节变量中,三个字单元不知要求怎么用

BUFFERDB67H,56H,73H,21H

RESUTDB3DUP(?

MOVAL,BUFFER+1;

第一个数据低两位->

AL

MOVBL,BUFFER+3;

第二个数据低两位->

BL

ADDAL,BL;

低两位相加

DAA;

十进制调整(什么指令?

MOVDL,AL;

低两位相加结果放到DL

MOVAL,BUFFER;

第一个数据高两位->

MOVBL,BUFFER+2;

第二个数据高两位->

ADCAL,BL;

DAA;

十进制调整

MOVBL,0

JNCHCF;

条件跳转指令,当CF=0时,跳转到标号处(就是有进位时)

INCBL

HCF:

MOVRESUT,BL;

存放最高位

MOVRESUT+1,AL;

存放中间两位

MOVRESUT+2,DL;

存放最低两位

END

START

3.16将SRCBUF变量定义的80个字符串传送到DSTBUF变量定义的存储区去。

当遇到0DH时,不将此字符传送到DSTBUF变量中去。

试编写程序,并加以注释。

SRCBUFDB'

aaa'

0DH,'

bbb'

DSTBUFDB80DUP(?

MOVCX,07;

比较次数->

CX

MOVSI,0;

源串指针->

SI

MOVDI,0;

目标串指针->

DI

SDCMP:

MOVAL,SRCBUF[SI]

CMPAL,0DH

JZNSEND

MOVDSTBUF[DI],AL;

不等于0DH,保

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

当前位置:首页 > 成人教育 > 成考

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

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