技术微型计算机原理与接口技术课后答案资料.docx

上传人:b****6 文档编号:8693667 上传时间:2023-02-01 格式:DOCX 页数:19 大小:19.96KB
下载 相关 举报
技术微型计算机原理与接口技术课后答案资料.docx_第1页
第1页 / 共19页
技术微型计算机原理与接口技术课后答案资料.docx_第2页
第2页 / 共19页
技术微型计算机原理与接口技术课后答案资料.docx_第3页
第3页 / 共19页
技术微型计算机原理与接口技术课后答案资料.docx_第4页
第4页 / 共19页
技术微型计算机原理与接口技术课后答案资料.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

技术微型计算机原理与接口技术课后答案资料.docx

《技术微型计算机原理与接口技术课后答案资料.docx》由会员分享,可在线阅读,更多相关《技术微型计算机原理与接口技术课后答案资料.docx(19页珍藏版)》请在冰豆网上搜索。

技术微型计算机原理与接口技术课后答案资料.docx

技术微型计算机原理与接口技术课后答案资料

【关键字】技术

15.已知:

在内存BUF开始的单元中,存在一串数据:

58,75,36,42,89。

编程找出其中的最小值存入MIN单元中,并将这个数显示在屏幕上。

解:

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

DATASEGMENT

BUFDB58H,75H,36H,42H,89H

MINDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVCX,4

MOVBX,OFFSETBUF

MOVAL,[BX]

ST1:

INCBX

CMPAL,[BX]

JBENEXT

MOVAL,[BX]

NEXT:

LOOPST1

MOVMIN,AL

ANDAL,0F0H

MOVCL,4

RORAL,CL

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

MOVAL,MIN

ANDAL,0FH

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

POPDS

MOVAH,4CH

INT21H

HLT

CODEENDS

ENDSTART

18.某班有20个同学的微机原理成绩存放在LIST开始的单元中,要求编程先从高到低的次序排列好,再求出总分和平均值,分别存放在SUM和AVER开始的单元中。

解:

STACKENDS

DATASEGMENT

LISTDB65H,76H,78H,54H,90H,85H,68H,66H,77H,88H

DB99H,89H,79H,69H,75H,85H,63H,73H,83H,93H

SUMDW0

AVERDB0

BUFDB100DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVDI,OFFSETLIST

MOVBX,19

LP0:

MOVSI,DI

MOVCX,BX

LP1:

MOVAL,[SI]

INCSI

CMPAL,[SI]

JNCLP2

MOVDL,[SI]

MOV[SI-1],DL

MOV[SI],AL

LP2:

LOOPLP1

DECBX

JNZLP0

LP3:

MOVCX,20

MOVBX,OFFSETLIST

MOVSUM,0

XORAX,AX

LP4:

ADDAL,[BX]

DAA

ADCAH,0

INCBX

LOOPLP4

MOVSUM,AX

MOVBL,20H

DIVBL

ADDAL,0

DAA

MOVAVERAL

POPDS

HLT

CODEENDS

ENDSTART

20.编程将存放在AL中的无符号二进制数,转化成十六进制数,再转换成ASII码并显示在屏幕上。

解:

程序如下:

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

DATASEGMENT

DB100DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVDH,AL

MOVCH,02H

ST1:

MOVCL,4

RORDH,CL

MOVAL,DH

ANDAL,0FH

ADDAL,30H

CMPAL,39H

JBEDISP

ADDAL,07H

DISP:

MOVDL,AL

MOVAH,02H

INT21H

DECCH

JNZST1

POPDS

MOVAH,4CH

INT21H

HLT

CODEENDS

ENDSTART

21.编写程序,使用三种以上的方法,将存储器中2000H开始的地址单元中的100字节数据复制到3000H开始的存储器地址单元中。

解:

(1)利用通用传送指令MOV

MOVSI,2000H注意这里如果是标号地址,则必须用OFFSET

MOVDI,3000H

MOVCX,100

LP1:

MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPLP1

HLT

MOVCX,100

MOVBX,0

LP0:

MOVAL,2000[BX]

MOV3000[BX],AL

INCBX

LOOPLP0

HLT

(2)利用交换指令XCHG

MOVSI,2000H

MOVDI,3000H

MOVCX,100

LP2:

MOVAL,[SI]

XCHG[DI],AL

INCSI

INCDI

LOOPLP2

HLT

(3)利用换码指令XLAT

MOVBX,2000H

MOVDI,3000H

MOVCX,100

LP3:

XORAL,AL

XLAT

MOV[DI],AL

INCBX

INCDI

LOOPLP3

HLT

(4)利用堆栈实现数据传送

MOVSI,2000H

MOVDI,3000H

MOVCX,50

LP4:

PUSH[SI]

POP[DI]

INCSI

INCSI

INCDI

INCDI

LOOPLP4

HLT

(5)利用串操作指令REPMOVSB

MOVSI,2000H

MOVDI,3000H

MOVCX,100

CLD;DF=0,SI、DI自动+1

REPMOVSB

HLT

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

DA1DB?

DA2DW10DUP(?

DA3DB‘ABCD’

MOVAX,TYPEDA1

MOVBX,SIZEDA2

MOVCX,LENGTHDA3

解:

各条MOV指令执行后,有关寄存器的内容如下:

MOVAX,TYPEDA1;(AX)=1

MOVBX,SIZEDA2;(BX)=20

MOVCX,LENGTHDA3;(CX)=1

下段程序完成后,AH等于什么?

INAL,5FH

TESTAL,80H

JZL1

MOVAH,0

JMPSTOP

L1:

MOVAH,0FFH

STOP:

HLT

如果地址为5FH的外设输入到AL中的数据的最高位=1,则(AH)=0,否则,(AH)=0FFH。

设置8259的中断向量

MOVAX,SEGIRQ2

MOVDS,AX

MOVDX,OFFSETIRQ2

MOVAL,42H

MOVAH,25H

INT21H

;8259初始化

MOVAL,13H;ICW1边沿触发,单片8259,有ICW4

OUT20H,AL

MOVAL,40H;ICW2中断类型号基值为40H

OUT21H,AL

MOVAL,01H;ICW48088系统,普通EOI,;完全嵌套式

OUT21H,AL

MOVAL,0FDH

OUT21H,AL;OCW1,设置IMR,中断屏蔽

微处理器CPU:

控制微处理器与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。

微处理器主要完成:

(1)指令控制:

从存储器中取指令,指令译码;

(2)数据加工:

简单的算术逻辑运算;

(3)操作控制:

在微处理器和存储器或者I/O之间传送数据;

(4)时间控制:

程序流向控制。

存储器:

用来存放数据和指令。

I/O接口:

主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。

I/O设备:

输入原始数据和程序,转换成计算机能识别的信息,送入存储器去等待处理。

输出运算结果。

总线:

连接计算机系统中各功能部件的信息通道。

13.设CS=1200H,IP=0100H,SS=5000H,SP=0400H,DS=2000H,SI=3000H,BX=0300H,(20300H)=4800H,(20302H)=00FFH,TABLE=0500H,PROG_N标号的地址为1200:

0278H,PROG_F标号的地址为3400:

0ABCH。

说明下列每条指令执行完后,程序分别转移到何处执行?

JMP指令

(1)JMPPROG_N

段内直接近转移,目的地址为1200H:

0278H(或12278H)

(2)JMPBX

段内寄存器间接转移,目的地址为1200H:

0300H(或12300H)

(3)JMP[BX]

物理地址=DS×10H+BX=2000H×10H+0300H=20300H

(20300H)=4800H→IP

段内存储器间接转移,目的地址为1200H:

4800H(或16800H)

(4)JMPFARPROG_F

段间直接转移,目的地址为3400H:

0ABCH(或34ABCH)

(5)JMPDWORDPTR[BX]

物理地址=DS×10H+BX=2000H×10H+0300H=20300H

(20300H)=4800H→IP,(20302H)=00FFH→CS

段间存储器间接转移,目的地址为00FFH:

4800H(或057F0H)

JMP改为CALL后,目的地址与JMP相同。

(1)CALLPROG_N

段内直接调用,3字节指令,目的地址为1200H:

0278H(或12278H),0103H入栈,SP=03FEH

(2)CALLBX

段内寄存器间接调用,2字节指令,目的地址为1200H:

0300H(或12300H),0102H入栈,SP=03FEH

(3)CALL[BX]

段内存储器间接调用,2字节指令,目的地址为1200H:

4800H(或16800H),0102H入栈,SP=03FEH

(4)CALLFARPROG_F

段间直接调用,5字节指令,目的地址为3400H:

0ABCH(或34ABCH),1200H和0105H分别入栈,SP=03FCH

(5)CALLDWORDPTR[BX]

段间间接调用,2字节指令,目的地址为00FFH:

4800H(或057F0H),1200H和0102H分别入栈,SP=03FCH

12.编程实现,从键盘输入一个十进制数0~9,查表求键入数字的七段代码(共阳极LED显示器的段码),存入DL中,并在键入数字之前,显示提示信息“Pleaseinputanumber(0~9):

”。

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

DATASEGMENT

TABLEDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

BUFDB'Pleaseinputonenumber(0~9):

',0DH,0AH,'$'

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK,ES:

DATA

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVDX,OFFSETBUF

MOVAH,09H

INT21H

MOVAH,1

INT21H

ANDAL,0FH

MOVBX,OFFSETTABLE

XLAT

MOVDL,AL

POPDS

HLT

CODEENDS

ENDSTART

数字5的共阳极LED七段码为92H。

22.在DATA开始的4个单元中存放着一个32位数,求出其中的“1”的个数,并存入COUNT单元中。

解:

DATASEGMENT

DATA1DB0FEH,86H,7CH,35H

COUNTDB00H

DATAENDS

STACKSEGMENT

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVAX,STACK

MOVSS,AX

MOVSI,OFFSETDATA1

MOVBX,[SI]

MOVDX,[SI+2]

MOVCX,32

XORAL,AL

LP1:

RCRDX,1

RCRBX,1

JNCLP2

INCAL

LP2:

LOOPLP1

MOVCOUNT,AL

POPDS

MOVAH,4CH

INT21H

HLT

CODEENDS

ENDSTART

10.编制两个通用过程,完成两位十六进制数转换成ASCII码,并将ASCII码字符显示。

(1)两位十六进制数转换成ASCII码

设两位十六进制数存放在DL中,输出的ASCII码存放在BX中。

CONPROC

PUSHAX

PUSHCX

MOVCL,4

MOVAL,DL

ANDAL,0FH

CMPAL,0AH

JNCLP1

ADDAL,30H

JMPLP2

LP1:

ADDAL,37H

LP2:

MOVBL,AL

MOVAL,DL

SHRAL,CL

ANDAL,0FH

CMPAL,0AH

JNCLP3

ADDAL,30H

JMPLP4

LP3:

ADDAL,37H

LP4:

MOVBH,AL

POPCX

POPAX

RET

CONENDP

四位十六进制数转换成ASCII码,

设四位十六进制数存放在存储器BUF1单元中,输出的ASCII码存放在存储器BUF2开始的单元中。

CONPROC

PUSHAX

PUSHCX

PUSHDX

MOVDI,OFFSETBUF2

MOVSI,OFFSETBUF1

MOVCL,4

MOVDH,4

MOVDX,[SI]

LP1:

ROLDX,CL

MOVAL,DL

ANDAL,0F

ADDAL,30H

CMPAL,3AH

JCLP2

ADDAL,07H

LP2:

MOV[DI],AL

INCDI

DECCH

JNZLP1

POPDX

POPCX

POPAX

RET

CONENDP

(2)ASCII码字符显示

设2个ASCII码字符在BX中。

DISPPROC

PUSHAX

MOVDL,BL

MOVAH,2

INT21H

MOVDL,BH

INT21H

POPAX

RET

DISPENDP

13.将键盘上输入的一位为十六进制数转换成十进制数,在屏幕上显示。

DATASEGMENT

DATA1DB10DUP(?

DATA2DB10DUP(?

DATAENDS

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

KEY:

MOVAH,1

INT21H

ZH:

CMPAL,3AH

JAEZH1

SUBAL,30H

JMPZH2

ZH1:

SUBAL,37H

ADDAL,0

DAA

ZH2:

MOVBL,AL

ANDAL,0F0H

MOVCL,4

SHRAL,CL

ADDAL,30H

MOVBH,AL

MOVAL,BL

ANDAL,0FH

ADDAL,30H

MOVBL,AL

DISP:

MOVDL,BH

MOVAH,2

INT21H

MOVDL,BL

MOVAH,2

INT21H

POPDS

MOVAH,4CH

INT21H

HLT

CODEENDS

ENDSTART

22.编程序统计学生的数学成绩,分别归类90~99分,80~89分,70~79分,60~69分及60分以下,并将各段的人数送入内存单元中。

解:

STACKSEGMENT

DB100DUP(?

STACKENDS

DATASEGMENT

DATA1DB200DUP(?

DATA2DB100DUP(?

DATA3DB10DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

XORCX,CX

KEY:

MOVSI,OFFSETDATA1

KEY1:

MOVAH,1

INT21H

CMPAL,‘$’

JZZH

INCCX

MOV[SI],AL

INCSI

JMPKEY1

ZH:

MOVSI,OFFSETDATA1

MOVDI,OFFSETDATA2

SHRCX,1

PUSHCX

ZH1:

MOVAL,[SI]

ANDAL,0FH

SHLAL,1

SHLAL,1

SHLAL,1

SHLAL,1

MOVBL,AL

INCSI

MOVAL,[SI]

ANDAL,0FH

ORAL,BL

MOV[DI],AL

INCSI

INCDI

LOOPZH1

TJ:

POPCX

MOVDI,OFFSETDATA2

TJ0:

MOVAL,[DI]

CMPAL,90H

JNBTJ1

CMPAL,80H

JNBTJ2

CMPAL,70H

JNBTJ3

CMPAL,60H

JNBTJ4

INC4[DATA3]

JMPTJ5

TJ1:

INC[DATA3]

JMPTJ5

TJ2:

INC1[DATA3]

JMPTJ5

TJ3:

INC2[DATA3]

JMPTJ5

TJ4:

INC3[DATA3]

TJ5:

INCDI

LOOPTJ0

POPDS

MOVAH,4CH

INT21H

HLT

CODEENDS

ENDSTART

某班有七个同学的英语成绩低于80分,分数存在ARRAY数组中,试编程完成以下工作:

(1)给每人加5分,结果存到NEW数组中

(2)把总分存到SUM单元中

(3)把平均分存到AVERAGE单元中

解:

STACKSEGMENTSTACK

DB100DUP(?

STACKENDS

DATASEGMENT

ARRAYDB7DUP(?

NEWDB7DUP(?

SUMDW0

AVGDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVCX,7

MOVSI,0

MOVSUM,0

MOVAH,0

LP1:

MOVAL,ARRAY[SI]

ADDAL,05H

DAA

MOVNEW[SI],AL

ADDAL,SUM

DAA

MOVSUM,AL

ADCAH,0

DAA

MOVSUM+1,AH

INCSI

LOOPLP1

MOVAX,SUM

MOVBL,07H

DIVBL

MOVAVG,AL

HLT

CODEENDS

此文档是由网络收集并进行重新排版整理.word可编辑版本!

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

当前位置:首页 > PPT模板 > 商务科技

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

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