第三章答案.docx

上传人:b****3 文档编号:2816866 上传时间:2022-11-15 格式:DOCX 页数:14 大小:19.58KB
下载 相关 举报
第三章答案.docx_第1页
第1页 / 共14页
第三章答案.docx_第2页
第2页 / 共14页
第三章答案.docx_第3页
第3页 / 共14页
第三章答案.docx_第4页
第4页 / 共14页
第三章答案.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

第三章答案.docx

《第三章答案.docx》由会员分享,可在线阅读,更多相关《第三章答案.docx(14页珍藏版)》请在冰豆网上搜索。

第三章答案.docx

第三章答案

注:

本习题解中的程序仅为代码片段,可在Emu8086version2.57环境下仿真运行,如果在MASM下进行汇编,需添加段设置以及相应的伪指令。

3.1

MOVAX,00H;立即寻址

SUBAX,AX;寄存器寻址

MOVAX,[BX];寄存器间接寻址

MOVAX,TABLE;直接寻址

MOVAL,ARAY1[SI];寄存器相对寻址

MOVAX,[BX+6];寄存器相对寻址

3.2若1KB的数据存放在TABLE以下,试编写程序将该数据拌到NEXT之下。

程序片段如下:

ORG100h

MOVCX,03FFH;数据个数

LEASI,TABLE;源区首地址

LEADI,NEXT;目的区首地址

AGAIN:

MOVAL,[SI];

MOV[DI],AL;搬移

INCSI

INCDI;移动地址指针

DECCX;循环计数器递减

JNZAGAIN;循环未结束转

HLT;暂停

TABLEDB1024dup('A');源数据区

NEXTDB1024dup(0);目的数据区

3.3编写10个字(16位二进制数)之和的程序

ORG100h

LEASI,ADD1;

LEADI,ADD2;

LEABX,SUM;

MOVCL,CONT;

MOVCH,0;循环初始化

CLC;进位清零

MADD1:

MOVAX,[SI];读加数1

ADCAX,[DI]

ADDSI,2;移动源区地址指针

ADDDI,2;移动目的区地址指针

MOV[BX],AX;回存计算结果

ADDBX,2;移动“和”存储区地址指针

LOOPMADD1;循环控制

HLT;暂停

ADD1DB0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1

ADD2DB56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H;加数2

SUMDB10DUP(0);和存储单元

CONTDB5;循环次数

3.4某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS和REMAIN中。

ORG100h

MOVBL,2;除数初值

AGAIN:

MOVCX,NUM;预计最大循环次数

MOVAL,BL;0、1的平方根除外

MULBL;得到2的平方

CMPAX,CX;大于原始数据么?

JGEXIT;若原始数据小于4转EXIT

MOVAX,CX;读数

DIVBL;试除

INCBL;除数递增

JMPAGAIN;继续除

EXIT:

DECBL;去除除数自加

MOVANS,BL;存商

MOVAL,BL;恢复余数

MULBL;

SUBCX,AX;

MOVREMAIN,CL;

HLT

NUMDW7;

ANSDB?

;

REMAINDB?

;

3.5在DATA1之下顺序存放着以ASCII码表示的千位数,将其转换成二进制数。

MOVCL,4;移位次数

MOVCH,CL;循环次数

MOVSI,OFFSETASCBIN

CLD

XORAX,AX

XORDX,DX

ASCB1:

LODSB

ANDAL,7FH

CMPAL,'0';不大于‘0’结束转换

JLERR

CMPAL,'9'

JGASCB2;大于‘9’转ASCB2

SUBAL,30H;数字形式二进制数减30H

JMPASCB3

ASCB2:

CMPAL,'A';大于‘9’又小于‘A’结束转换

JLERR

CMPAL,'F'

JGERR;大于‘F’为不合理数,结束转换

SUBAL,37H;字符形式ASCII数减37H

ASCB3:

ORDL,AL

ROLDX,CL

DECCH

JNZASCB1

ROLDX,CL

MOVBIN,DX;存储转换结果

ERR:

NOP

HLT

ASCBINDB'1','B,'4','3'

BINDW?

3.7编写程序将MOLT中的一个8位数乘以20,乘积放在ANS中(用3种方式)。

解:

第一种方法:

常规乘法运算

ORG100h

MOVAL,MOLT

MOVBL,20

MULBL

MOVANS,AX

HLT

MOLTDB2

ANSDW?

第二种方法,将MOLT连加20次

ORG100h

MOVCX,20

MOVBX,MOLT

XORAX,AX

CLC

ADD1:

ADCAX,BX

LOOPADD1

MOVANS,AX

HLT

MOLTDW5

ANSDW?

第三种方法,将“20”连加MOLT次

ORG100h

MOVCX,MOLT

MOVBX,20

XORAX,AX

CLC

ADD1:

ADCAX,BX

LOOPADD1

MOVANS,AX

HLT

MOLTDW5

ANSDW?

3.8在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。

ORG100h

XORDL,DL

LEADI,KVFF;

NEXT0:

LEASI,BUFFER;

MOVCL,99;比较次数为N-1次

NEXT1:

MOVAL,[SI];

INCSI;

CMPDL,AL;

JNCNEXT2;

MOVDL,AL;DL中始终存目前最大值

NEXT2:

DECCL;

JNZNEXT1;

MOV[DI],DL;最大值存储

HLT

BUFFERDB;自行定义100个数据

KVFFDB?

3.9若将数据按大小顺序排序,试编写程序..

解:

此处采用“冒泡法”予以处理:

ORG100h

LEADI,BUFFER;数据区

MOVBL,99;外循环次数

NEXT0:

MOVSI,DI;

MOVCL,BL;内循环次数

NEXT3:

MOVAL,[SI];读数

INCSI;移动指针

CMPAL,[SI];比较

JNCNEXT5;大于转NEXT5

MOVDL,[SI];

MOV[SI-1],DL;

MOV[SI],AL;不大于互换

NEXT5:

DECCL;内循环次数减一

JNZNEXT3;

DECBL;外循环次数减一

JNZNEXT0

HLT

BUFFERDB自行定义100个字节型数据

3.10在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中.

A<20,Y=3*A;A<60,Y=A-20;A>=60,Y=80.

ORG100h

MOVAL,BVFF

CMPAL,20

JLEX1

CMPAL,60

JLEX2

MOVAL,80

JMPSTOP

EX1:

MOVBL,3

MULBL

JMPSTOP

EX2:

SUBAL,20

STOP:

MOVDES,AL

HLT

BVFFDB8

DESDB?

3.11址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:

统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中

求平均成绩,结果存放在LEVEL中。

解:

寄存器使用分配:

90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。

ORG100h

XORAH,AH

XORDX,DX;统计结果清零

XORBX,BX;统计结果清零

LEASI,DATA

LEADI,LEVEL

MOVCL,CONT;总人数送循环计数器CX

goon:

MOVAL,[SI];读原始数据

ADC[DI],AL;累加总分

ADC[DI+1],0;计算进位

CMPAL,90

JLPP8;不高于90分者转PP8

INCDH;90--100分的人数加一

JMPSTOR

PP8:

CMPAL,80

JLPP7;不高于80分转PP7

INCDL;80----89分的人数加一

JMPSTOR

PP7:

CMPAL,70

JLPP6;不高于70分者转PP6

INCBH;70---79分的人数加一

JMPSTOR

PP6:

CMPAL,60

JLPP5;不高于60分者转PP5

INCBL;60---69分的人数加一

JMPSTOR

PP5:

INCAH;低于60分的人数加一

STOR:

INCSI;读下一个分数

LOOPGOON

;CX=CX-1,CX不为零转GOON,继续统计

LEASI,BUFFER;回存统计结果

MOV[SI],DH

INCSI

MOV[SI],DL

INCSI

MOV[SI],BH

INCSI

MOV[SI],BL

INCSI

MOV[SI],AH

MOVAX,WORDPTR[DI];计算平均成绩

MOVCL,CONT

DIVCL

MOVLEVEL,AL;回存平均成绩

HLT

CONTDB10

DATADB30,65,99,80,75,89,100,45,60,70

BUFFERDB?

?

?

?

?

LEVELDB?

?

3.12求两个有符号数(DATA1,DATA2)差的绝对值,结果存入DATA3.

ORG100h

MOVAL,DATA1;读入被减数

SUBAL,DATA2;减去减数

JCCHANGE;

JMPSTOR

CHANGE:

NEGAL

STOR:

MOVDATA3,AL

HLT

DATA1DB3

DATA2DB5

DATA3DB?

3.13存从40000H到4BFFH的个单元均写入55H,并再逐个读出,验证是否一致,若一致,置AL为7EH,否则置AL为81H.

ORG100h

MOVAX,4000H;

MOVDS,AX;

MOVSI,0

START:

MOVCX,0BFFFH

BEGIN:

MOV[SI],55H

MOVAL,[SI]

INCSI

CMPAL,55H

JNZERR

LOOPBEGIN

MOVAL,7EH

JMPSTOP

ERR:

MOVAL,81H

STOP:

HLT

3.14~3.15端口03FBH的BIT5为状态标志,当该位为1时,表示外设忙,不能接收数据;当为0时,表示外设闲,可以接收数据;当CPU向端口03F8H写入一个字节的数据时,03FBH的BIT5置1,当它变为0状态时,又可以写入下一个数据。

据此编写将起始地址为

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

当前位置:首页 > 经管营销 > 经济市场

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

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