微机原理及应用习题库硬件应用设计题汇编语言程序设计题_第1页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题_第2页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题_第3页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题_第4页
微机原理及应用习题库硬件应用设计题汇编语言程序设计题_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理及应用习题库硬件应用设计题汇编语言程序设计题

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组

中负数的个数。其中,在该数组的第一个字节存放的是数组中所包含

的数据的个数,第二个字节用来存放结果,即数组中负数的个数,数

组中的第三个字节开始存放的是数组中的数据。

1.写出编程思想;

2.编写完整的源程序。

1.编程思想

为统计数组中负数的个数,需要逐个判断数组中的每个数据,然

后将所有数据中凡是符号位为1的数据的个数累加起来,便是数组中

所包含的负数的个数。

2.完整的源程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

ARRAYDB200DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA,SS:STACK

START:MOVAXZDATA

MOVDS,AX

LEADLARRAY

MOVSLDI

MOVCLJDI]

XORCH,CH

MOVBL,CH

INCDI

INCDI

AGAIN:TESTBYTEPTR[DI]z80H

JZPOSI

INCBL

POSI:INCDI

LOOPAGAIN

MOV[SI]+1,BL

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

编一个完整的汇编语言程序,完成从键盘输入一个字符,若输入

的是1字符,则在屏幕上显示你的英文名字;若输入的是2字符,则

在屏幕上显示你的学号。若输入的不是1或者2字符,则重新输入。

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$Z

;,

CRLFDB0DHz0AH$

STRING2DB'PLEASEINPUTSTRING:,0DH,0AH;$'

z

NAMEDB'ZHANGSAN:ZODHZOAH;$

NUMBERDB,020701053:,ODH,OAH;$z

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

LEADX.STRINGl

MOVAH,09H

INT21H

MOVAH,01H

INT21H

CMPAL;Y'

JEINPUT

CMPAL;y'

JNEDONE

INPUT:LEADX,CRLF

MOVAHz09H

INT21H

LEADX,STRING2

MOVAH,09H

INT21H

AGAIN:MOVAHz01H

INT21H

CMPAL;lz

JEDISPNAME

CMPAL;2'

JEDISPNUMBER

JMPAGAIN

DISPNAME:LEADX,NAME

MOVAH,09H

INT21H

JMPDONE

DISPNUMBER:LEADX,NUMBER

MOVAH,09H

INT21H

DONE:MOVAHZ4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

假设有一字节型数组ARRAY,编写完整的汇编语言程序求该数组

中小于80H的数的个数。其中,在该数组的第一个字节存放的是数蛆

中所包含的数据的个数,第二个字节用来存放结果,数组中的第三个

字节开始存放的是数组中的数据。

1.写出编程思想;

2.编写完整的源程序。

1.编程思想

将数组中的每个数逐个与80H比较,根据大小关系方可统计出数

组中小于80H的数的个数2.完整的源程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

ARRAYDB200DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATAZSS:STACK

START:MOVAX,DATA

MOVDS,AX

LEADLARRAY

MOVSI,DI

MOVCLJDI]

XORCH,CH

MOVBLZCH

INCDI

AGAIN:CMPBYTEPTR[DI],80H

JAELI

INCBL

LI:INCDI

LOOPAGAIN

MOV[SI]+1,BL

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

在存储器DATABUF以下连续的单元存放着由字符0~9或A~F

组成的一串字符(字符个数自定义或用其它方法求解),试编写完整

的8086汇编语言程序,将其转换成数字存回原处。(如某单元的字符

为T,即31H,就转换成01H;为A,即41H,就转换成0AH)

1.写出编程思想;

2.编写完整的源程序。

1.编程思想

将存储器DATABUF以下连续的单元中的每个数与39H(1字符的

ASCLL码)比较,若该数小于等于39H,则将该数减去30H,否则将

该数减去37H,其结果就是该字符对应的数字。2.完整的源程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

DATABUFDB/1234ABCDdcsa56,

COUNTEQU$-DATABUF

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDSZAX

MOVSI,OFFSETDATABUF

MOVCX,COUNT

NEXT:MOVAL,[SI]

CMPALZ39H

JBELI

LI:SUBAL,30H

MOV[SI],AL

INCSI

LOOPNEXT

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

在当前数据段,偏移地址为DATAB开始的顺序80个单元中,存放

着某班80个同学某门课考试的成绩,编写程序统计高于等于90分,

80分一89分,70分一79分,60分一69分"氐于60分的人数各为

多少,将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。

1.写出编程思想。

2.编写完整的源程序。

1.编程思想

将偏移地址为DATAB开始的顺序80个单元中的数分别与90、

80、70、60比较,根据比较的大小关系就可统计出高于等于90分,

80分一89分z70分一79分,60分一69分/氐于60分的人数。

2.完整的源程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

DATABDB80DUP(?)

BTRXDB5DUP(OOH)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZSS:STACK

START:MOVAX,DATA

MOVDSZAX

MOVSLOFFSETDATAB

MOVDLOFFSETBTRX

XORBX,BX

XORDX,DX

MOVCX,80

NEXT:MOVAL,[SI]

JBC80

INCBH;>90分的人数

JMPAAA

C80:CMPAL,80

JBC70

INCBL;>80分的人数

JMPAAA

C70:CMPALJO

JBC60

INCDH;>70分的人数

JMPAAA

C60:CMPALz60

JBAAA

INCDL;>60分的人数

JMPAAA

AAA:INCSI

LOOPNEXT

MOVAL,80

SUBAL,BH

SUBAL,BL

SUBAL,DH

SUBAL,DL;<50分的人数

MOV[DI]ZBH

MOV[DIJ+l.BL

MOV[DI]+2,DH

MOV[DI]+3,DL

MOV[DI]+4,AL

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

编写完整的汇编语言程序,实现从键盘输入一串字符,并在屏幕

上显示出来。

1.写出编程思想。

2编写完整的汇编语言程序。

1.编程思想

用DOS0AH号功能完成从键盘输入一串字符,用DOS09H号功

能完成屏幕的显示。

2.完整的汇编语言程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$Z

z

CRLFDB0DHz0AH;$

STRING2DB'PLEASEINPUTSTRING:,0DH,0AH;$'

BUFINDB20H

DB?

BUFIN1DB20HDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZSS:STACK

START:MOVAX,DATA

MOVDS,AX

LEADXZSTRING1

MOVAH,09H

INT21H

MOVAHz01H

INT21H

CMPAL;Y'

JEINPUT

CMPAL;y'

JNEDONE

INPUT:LEADX,CRLF

MOVAH,09H

INT21H

LEADX5TRING2

MOVAH,09H

INT21H

LEADXZBUFIN

MOVAHZOAH

INT21H

MOVALZBUFIN+1

CBW

LEASLBUFIN+2

ADDSI,AX

MOVBYTEPTR[SI];$f

LEADXZCRLF

MOVAH,09H

INT21H

LEADX,BUFIN+2

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

已知有100个8位无符号数已存放在缓存区INX中,编写完整的

汇编语言程序,实现对这100个数据由高到低排序。

lo写出编程思想。

2。编写完整的汇编语言程序。

1.编程思想

利用气泡排序法对这100个8位无符号数两两进行比较,从而完

成值的大小从大至小排序。

2.完整的汇编语言程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

INXDB100DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVCHJ00-1

BIO:LEASIJNX

MOVCL,CH

B20:MOVALJSI]

CMPALZ[SI]+1

JAEB30

XCHGAL,[SI]+1

MOV[SI],AL

B30:INCSI

DECCL

JNZB20

DECCH

JNZBIO

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

编写完整的汇编语言程序,实现以下功能:

从键盘输入一串字符,将其按ASCII码值的大小从小至大排序,

并将排好序的新的字符串输出到屏幕上显示出来。

1。写出编程思想。

2。编写完整的汇编语言程序。

1.编程思想

用DOS0AH号功能完成从键盘输入一串字符,利用气泡排序法

对输入的字符串中字符两两进行比较,从而完成按ASCII码值的大小

从大至小排序。对排好序的新的字符串,用DOS09H号功能完成屏幕

的显小。

2.完整的汇编语言程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

STRING1DB'DOYOUWANTTOINPUTSTRING?(Y/N):$,

z

CRLFDB0DHz0AH;$

z

STRING2DB'PLEASEINPUTSTRING:z0DH,0AH;$

BUFINDB20H

DB?

BUFIN1DB20HDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

LEADX.STRINGl

MOVAH,09H

INT21H

MOVAH,01H

INT21H

CMPAL;Y'

JEINPUT

CMPAL;y'

JNEDONE

INPUT:LEADX,CRLF

MOVAH,09H

INT21H

LEADX,STRING2

MOVAH,09H

INT21H

LEADX,BUFIN

MOVAH,0AH

INT21H

MOVAL.BUFIN+1

CBW

LEASI,BUFIN+2

ADDSI,AX

MOVBYTEPTR[SI];$r

LEADXZCRLF

MOVAH,09H

INT21H

MOVCHZBUFIN+1

DECCH

BIO:LEASLBUFIN+2

MOVCL,CH

B20:MOVALJSI]

CMPALZ[SI]+1

JAEB30

XCHGAL,[SI]+1

MOV[SI],AL

B30:INCSI

DECCL

JNZB20

DECCH

JZDISP

JMPBIO

DISP:LEADX,BUFIN+2

MOVAHz09H

INT21H

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

在首址为DAT的字数组中存放有100个无符号数,求出它们的平

均值,并统计大于、等于及小于此平均数的个数。

1.简述编程思想,画出流程图;

2.编写完整的源程序。

1.编程思想

先求出100个无符号数的和,除以100就是平均值;然后用每个

数与平均值比较就可得出大于、等于及小于此平均数的个数。

2.完整的汇编语言程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

DATDB100DUP(?)

LVELDB0

GDATDBO

EDATDBO

LDATDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZSS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVCX,100

LEASI,DAT

MOVAX,0

LI:ADDAL,[SI]

ADCAH,0

INCSI

LOOPLI

MOVBL,100

DIVBL

MOVLVELZAL

MOVCX,100

LEASI,DAT

CMP[SIAL

JADY

JEXD

INCLDAT

JMPL2

DY:INCGDAT

JMPL2

XD:INCEDAT

L2:INCSI

LOOPLI

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

编一个完整的汇编语言程序,求某数的绝对值,并将结果放回原

处。STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

XADRDW3456H

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START:MOVAX,DATA

MOVDSZAX

MOVAX,XADR

TESTAX,8000H

JNSDONE

NEGAX

MOVXADR,AX

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

编一个完整的汇编语言程序,完成将以DSRC为首址的连续的

100个字节搬家到DDST以下单元。

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

DSRCDB100DUP(?)

DDSTDBDUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATAZSS:STACK

START:MOVAX,DATA

MOVDS,AX

LEASLDSRC

LEADLDDST

MOVCX,100

NEXT:MOVAL,[SI]

MOV[DI],AL

INCSI

INCDI

LOOPNEXT

MOVAH,4cH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

编写FAR类型子程序实现以十六进制数在屏幕上显示AL的内容。

1.写出编程思想。

2.编写完整的源程序。

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

DISPLAYPROCFAR

PUSHAX

PUSHCX

PUSHDX

PUSHAX

MOVCL,4;处理高位十六进制数

SHRAL,CL

CALLCHANG;十六进制数变换成ASCII码

MOVAHz02

MOVDL,AL

INT21H;显示一一位字符

POPAX

ANDAL,0FH;处理低位十六进制数

CALLCHANG;十六进制数变换成ASCII码

MOVAH,02

MOVDL,AL

INT21H;显示一位字符

POPDX

POPCX

POPAX

RET

DISPALENDP

CODEENDS

ENDDISPLAY

MOVAH,4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲~第38讲

0.8

0.8

15

编写FAR类型子程序实现统计一个字(AX)中的个数。

1.写出编程思想。

2.编写完整的源程序。1.编程思想

由于AL中有两位十六进制数,每一位的值为0~9、0AH〜0FH,

在显示时需要将它们转换成相应的ASCII码,然后调用INT21H的

02H号功能进行显示。2.完整的源程序CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

COUNTER1PROCNEARPUSHAX

MOVCXJ6

XORBLZBL

COUI:

SHRAX,1ADCBL,0

LOOPCOUIPOPAXRETCOUNTERlENDPCODEENDSEND

DISPLAY

微机原理及应用汇编语言程序设计第32讲~第38讲0.80.815

设在BUFFER中已经保存有字型数据(nxxx,〃21),其中前2

个字节为数据的个数,计算数据的差分,并保存在DIFF缓冲区中。1.

写出编程思想。2.编写完整的源程序。1.编程思想

可根据数据的差分定义来编成计算,其公式为:)L21(2

l-=+=-nkxxdxkkk

2.完整的源程序

STACKSEGMENTSTACK

DB256DUP(?)

STACKENDS

DATASEGMENT

BUFFERDWn

DWXLX2,...,Xn

DIFFDWn-1DUP(?)

DATAENDS

CODESEGMENT

ASSUMECS:CODEZDS:DATA,SS:STACK

START:MOVAX,DATA

MOVDS,AX

MOVSLBUFFER

MOVCX,[SI]

ADDSI,2

JCXZPROCEND;当(CX)=0时,跳过循环

LEADLDIFF

MOVAX,[SI]

ADDSI,2

PROCI:

ADDAXZ[SI]

SHRAXL完成(AX)+2操作

MOV[DI],AX;保存差分结果

ADDDI,2

MOVAX,[SI]

ADDSI,2

LOOPPROCI

MOVAHZ4CH

INT21H

CODEENDS

ENDSTART

微机原理及应用

汇编语言程序设计

第32讲〜第38讲

0.8

0.8

15

字节型变量VARLVAR2和VAR3存放有3个无符号数,将其中

的内容按从大到小重新排列。

1.写出编程思想。

2编写完整的源程序。

1.编程思想

通过在三个数中找出最大值,将它与VAR1单元进行交换;然后

对剩余的两个数进行比较,将较大值存放在VAR2中。经重新排列后,

VAR1的值最大,VAR3的值最小。由于变量中存放的数据为无符号数,

因此应该采用JA、JAE、JB、JBE等指令。

2.完整的源程序

STACKSEGMENTSTACK'STACK'

DW100HDUP(?)

TOPLABELWORD

STACKENDS

DATASEGMENT

VARIDB46H;先假设一组值,以便检验程序设计的正确性

VAR2DB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论