计算机硬件技术基础第6章.docx

上传人:b****5 文档编号:8028861 上传时间:2023-01-28 格式:DOCX 页数:15 大小:110.53KB
下载 相关 举报
计算机硬件技术基础第6章.docx_第1页
第1页 / 共15页
计算机硬件技术基础第6章.docx_第2页
第2页 / 共15页
计算机硬件技术基础第6章.docx_第3页
第3页 / 共15页
计算机硬件技术基础第6章.docx_第4页
第4页 / 共15页
计算机硬件技术基础第6章.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机硬件技术基础第6章.docx

《计算机硬件技术基础第6章.docx》由会员分享,可在线阅读,更多相关《计算机硬件技术基础第6章.docx(15页珍藏版)》请在冰豆网上搜索。

计算机硬件技术基础第6章.docx

计算机硬件技术基础第6章

学习要点

1.应知部分

(1)知道指令格式和8086常用的寻址方式

(2)知道8086的指令种类及各指令的功能和应用

(3)知道指令、伪指令、标识符、保留字、数据段、代码段、堆栈段等概念

(4)知道汇编语言程序的基本结构及格式要求

(5)知道转移程序、循环程序和子程序

2.应会部分

(1)会分析指令的寻址方式

(2)能读懂汇编语言源程序

(3)能进行简单汇编程序设计

(4)能运行及调试汇编语言程序

知识结构

学习方法

1.理解过程,记住形式

2.先读后套,再编,以求融会贯通

解题指导

6.1

(1)源操作数与目的操作数类型不匹配

(2)两个操作数同为内存操作数

(3)两个操作数同为内存操作数

(4)操作数不是16位

(5)目的操作数是立即数

(6)用CS作目的操作数

(7)指令中移位次数大于1

(8)给段寄存器DS直接送立即数

(9)在两个段寄存器之间传送数据

(10)源操作数、目的操作数类型不匹配

6.2

(1)(DX)=0096H

(2)(DX)=0069H

(3)(DX)=00FFH

(4)(DX)=00EEH

(5)(DX)=0008H

(6)(DX)=00F7H

6.3

(1)(BX)=06CBH

(2)(BX)=65A8H

(3)(BX)=B65AH

(4)(BX)=A9B2H

6.4

(1)(SP)=0FFCH

(2)(SP)=1000H,(AX)=5678H

6.5

(AF)=0,(CF)=0,(OF)=0,(PF)=0,(SF)=0,(ZF)=0

6.6

(1)DATASEGMENT

wDB10H

XDB20H

ZDB30H

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,z

SUBAL,X

SUBAL,w

MOVz,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(2)DATASEGMENT

wDB30H

yDB20H

rDB10H

zDB?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,w

ADDy,6

ADDr,3

SUBAL,y

SUBAL,r

MOVz,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(3)DATASEGMENT

aDB02H

bDB10H

cDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,a

MULb

MOVc,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(4)DATASEGMENT

aDB02H

bDB10H

cDB06H

sDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,c

MULc

MOVBX,AX

MOVAL,a

MULb

SUBAX,BX

MOVS,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(5)DATASEGMENT

aDB02H

bDB10H

cDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,a

CBW

DIVb

MOVc,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

(6)DATASEGMENT

xDB02H

yDB10H

wDB?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,x

SUBAL,2

SHRAL,1

ADDAL,y

MOVw,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.7解:

提示:

该问题可直接通过分支程序进行三个数的比较,先作流程图,根据条件决定程序流向。

在此借助“冒泡排序”的思想,从第一个数开始,依次将第一个存储单元的数和第二个存储单元的数比较,第二个存储单元的数和第三个存储单元的数比较,若低地址单元的数大于高地址单元的数,则进行交换,否则继续比较。

采用循环程序嵌套,外层循环控制比较的次数,内层循环控制比较的个数。

DATASEGMENT

DATA1DB30H,20H,40H

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,3

LEASI,DATA1

MOVBL,0FFH;设置交换标志

L1:

CMPBL,0FFH

JNZOVER

MOVBL,00H

DECCX

JZOVER

PUSHSI

PUSHCX

L2:

MOVAL,[SI]

INCSI

CMPAL,[SI]

JBL3

XCHGAL,[SI]

MOV[SI-1],AL

MOVBL,0FFH

L3:

LOOPL2

POPCX

POPSI

JMPL1

OVER:

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.8该问题用条件循环程序实现。

DATASEGMENT

nDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAX,1

MOVBX,2

L:

CMPAX,100

JAEL1

ADDAX,BX

DAA

INCBX

JMPL

L1:

DECBX

MOVn,BX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.9分析:

该问题用循环程序实现,循环的次数为100。

因为是1~100的累加,所以用循环计数器CX作源操作数,循环初值为100。

DATASEGMENT

SUMDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,100

MOVAX,0

LOOP1:

ADDAX,CX

DAA

LOOPLOOP1

MOVSUM,AX

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.10分析:

该问题是一个不固定循环次数的循环程序,需要配合条件测试,测试存储区域中的数据是否为0。

DATASEGMENT

BUFFDB5,1,0,6,8,4

ANSDB?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

LEABX,BUFF;取存储区首地址

L:

MOVAL,[BX];取第1个数

INCBX

CMPAL,0;测试取出的数是否为0

JNEL;不为0,转L处,继续取下一个数

MOVAL,[BX];将0数据后的字节单元内容送ANS

MOVANS,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.11

(1)该程序的功能是选择数据区中最大的数。

运行结果是:

THERESULTIS:

9

(2)该程序的功能是将内存中的数与55进行比较,并显示大于55的数。

运行结果是:

60isaboveto55

6.12解:

DATASEGMENT

XDB01H

YDB03H

ZDB10H

MINDB?

DATAENDS

STASEGMENTSTACK‘STACK’

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,X

CMPAL,Y

JBLP1

MOVAL,Y

CMPAL,Z

JBNEXT

LP2:

MOVAL,Z

JMPNEXT

LP1:

CMPAL,Z

JNBLP2

NEXT:

MOVMAX,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.13解:

DATASEGMENT

BUF1DB01H,04H,05H,08H,12H,15H,14H,10H

BUF2DB8DUP(?

COUNTEQU$-BUF1

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA,ES:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEASI,BUF1

LEADI,BUF2

MOVCX,COUNT

CLD

REPMOVSB

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

6.14解:

DATASEGMENT

nEQU10

RESDW?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STA

START:

MOVAX,DATA

MOVDS,AX

MOVCX,n

MOVAX,0

CALLSUM

MOVRES,AX

MOVAH,4CH

INT21H

SUMPROC

LOOP1:

ADDAX,CX

LOOPLOOP1

RET

SUMENDP

CODEENDS

ENDSTART

6.15解:

DATASEGMENT

STRDB‘STUDENT’

COUNTEQU$-STR

LARGEDB?

SMALLDB?

DATAENDS

STASEGMENTSTACK

DB100DUP(?

STAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

LEASI,STR

MOVCX,COUNT

CALLMAX

MOVLARGE,AL

CALLMIN

MOVSMALL,AL

MOVAH,4CH

INT21H

MAXPROC

MOVAL,[SI]

INCSI

LOOP1:

CMPAL,[SI]

JBL1

INCSI

LOOPLOOP1

L1:

MOVAL,[SI]

INCSI

LOOPLOOP1

RET

MAXENDP

MINPROC

MOVAL,[SI]

INCSI

LOOP1:

CMPAL,[SI]

JAL2

INCSI

LOOPLOOP1

L2:

MOVAL,[SI]

INCSI

LOOPLOOP1

RET

MINENDP

CODEENDS

ENDSTART

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

当前位置:首页 > 法律文书 > 辩护词

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

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