第4章练习题.docx

上传人:b****6 文档编号:9046343 上传时间:2023-02-02 格式:DOCX 页数:19 大小:25.14KB
下载 相关 举报
第4章练习题.docx_第1页
第1页 / 共19页
第4章练习题.docx_第2页
第2页 / 共19页
第4章练习题.docx_第3页
第3页 / 共19页
第4章练习题.docx_第4页
第4页 / 共19页
第4章练习题.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

第4章练习题.docx

《第4章练习题.docx》由会员分享,可在线阅读,更多相关《第4章练习题.docx(19页珍藏版)》请在冰豆网上搜索。

第4章练习题.docx

第4章练习题

程序设计

定义段结束的伪指令是___________;定义子程序结束的伪指令是________。

伪指令XDB4DUP(6,2DUP(6,8));YDW6800H;设X的偏移地址为2000H,则Y的偏移地址为_________H,若执行指令MOVBL,BYTEPTRY后,则(BL)=_______________。

标号和变量都是存贮单元的符号地址,但其内容不同,标号是_______________的符号地址,而变量是_______________的符号地址。

伪指令VR1DB2DUP(?

3DUP(1,2),5)在存贮器中被分配了_______________字节。

汇编语言源程序结束伪指令是_______________。

下面表示段定义结束的伪指令是__________。

A)ENDB)ENDPC)ENDSD)ENDM

变量的类型属性如下,下面错误的类型是__________。

A)字节型B)字符型C)字型D)双字型

设有一程序定义如下:

ORG0024H

AR1DW4,5,$+4

MOVAX,AR1+4

执行以上指令后,AX中的内容正确的是_______________。

A)0028HB)0032HC)002AHD)002CH

现用数据定义伪指令定义数据:

BUFDB4DUP(0,2DUP(1,0));问定义后,存储单元中有数据0100H的字单元个数是____________。

A)4B)3C)8D)12

下列伪指令中定义字节变量的是________。

A)DBB)DWC)DDD)DT

使用DOS功能调用时,子功能号应放在()寄存器中。

A)ALB)AHC)DLD)DH

简述8086汇编语言中,指令语句和伪指令语句的区别和作用。

什么是变量,变量有哪些属性,如何使用这些属性?

试说明为什么有时候必须使用PTR属性操作符?

一个程序中,有下列伪指令:

ARYDB25DUP(3,4,4DUP(?

,1,0))

LENDW$-ARY

问LEN单元存储的值是多少?

什么是汇编语言,什么是汇编?

有一个程序片段如下

MSGDW3DUP(?

2DUP(5,4),3)

MENDW$-MSG

MOVAX,SEGMEN

MOVDS,AX

MOVAX,MEN

问AX的值最后是多少?

一个程序中,有下列伪指令:

ARYDW35DUP(3,4,4DUP(?

,1,0))

LENDW$-ARY

问LEN单元存储的值是多少?

简述DOS系统功能调用的使用方法?

用8086/8088汇编语言编程,实现从键盘输入一个不多于60个元素的无序8位无符号数数组,输入结束符为非数字字符。

然后对该数组用气泡排序法排序,最后用折半查找法在该数组中查找元素66,若查找到,显示'FOUND!

',若找不到,则显示'NOTFOUND!

'

从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。

要求源程序具备必要的伪指令和段说明。

试题编号:

A0285难度为:

容易章节:

程序设计——数据运算分值:

10

已知在DAT至DAT+2单元中分别有八位无符号数a、b和c,试编写一个程序段计算表达式(a*b+c)/a,商和余数分别存入RES和RES+1单元。

试题编号:

A0284难度为:

一般章节:

程序设计——数据运算分值:

10

有一带符号8位数X存于DAT单元.编一个程序段判断该数,若x小于0则将0FFH送MARK单元;若X等于0则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。

已知有X、Y、Z三个字变量,存放无符号整数,请编一个完整的程序实现公式Z=(X+Y)/(X-Y+600)(不考虑溢出情况)。

通过键盘输入一串不长于100个字符的字符串,以回车键为结束符,统计该字符串中的小写字母数存放于CX寄存器中。

AX寄存器中存放着4位十六进制数。

试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求用调用子程序的方法实现。

写出对存放在DX和AX中的双字长数求补的指令序列。

设有两个等长字符串。

试编写一个汇编语言程序,比较它们是否完全相同;若相同,则将字符"Y"送入AL中,否则,将字符"N"送入AL中。

写出程序段,把DX,AX中的双字右移四位。

已知有X、Y、Z三个字变量,存放无符号整数,请编一个完整的程序实现公式Z=(X+Y)/(X-Y+600)(不考虑溢出情况)。

编写一个汇编语言程序,要求对键盘输入的小写字母用对应的大写字母显示出来,非小写字母不显示。

如输入'abd'则应显示'ABD',输入字符以回车键结束。

统计从01000H内存单元开始的100个字(WORD)型带符号数中的正数、负数和零的字(WORD)个数。

将LM开始到LM+100的内存区中的一组数据按与原来相反的次序送到PM到PM+100的内存区。

从ARY开始存放着100个字型带符号数,寻找其中的最大值,结果放在MAX单元,只要写出实现功能的程序段即可。

实现两个十六位二进制数的加法。

要求加数放在FIRST开始单元,被加数放在SECOND开始单元,和数放在SUM单元。

编写一汇编语言程序,实现将数据段中首地址为1000H(偏移地址)的100个连续存放的字节型数据搬移至该段内首地址为1050H(偏移地址)的连续的100个内存单元中。

编写一个完整的8086汇编语言程序,从附加段中首地址为ADR1(变量名)连续存放的100个字型无符号整数中找出最大数,并将此数及其偏移地址分别放入变量MAX和MAXM中。

在数据区从BLOCK开始有若干个非0字型带符号数,并以0结尾,编程统计其中共有多少个数,其中正数有多少个,负数有多少个,分别存放在ALL,PLUS,MINUS三个字单元中。

比较AX,BX,CX中带符号数的大小,将最大的数放在AX中。

试编写此程序段。

已知(AX)=4BD5H,统计AX中1的个数和0的个数,并分别放在BL和DL中。

编写程序段实现该功能。

试编写程序,要求能从键盘接收一个个位数N,然后响铃N次(响铃的ASCII码为07H)。

有一个首地址为ARRAY的N个字的数组,请编程序使该数组中的数按照从大到小的次序排序。

(采用冒泡排序算法)

分别用移位指令和循环程序编写程序段完成(AX)*10,并将结果存入AX条件:

-32768〈=(AX)*10〈=32767。

已知32位数存放在DX:

AX中。

试编写一个汇编语言程序将32位数左移4位,并将高4位存入CH。

已知在N到N+I的存储区中有一组ASCII码字符串(共I+1个),试编写一个汇编语言程序,将此字符传送到NI到NI+I单元中,并使字符串的顺序与原来的顺序相反。

求1+2+3+……的直到和刚好大于1000,保存实际结果到Y中和项数n,画出程序流程图并编程实现。

从00AF0内存单元开始的100个8位带符号数中寻找最大、最小值,结果放在MAX、MIN中,画出程序流程图并编程实现。

现有一个不超过255个大写英文字母组成的字符串,要求编写一个完整的程序,统计A-Z各字符串出现的次数,并分别存入字符串后的以RESULT为首地址的26个字节单元中。

从内存30000H开始的单元中顺序存放着40个同学某门课的考试成绩,试编写程序段求该班该门课的总成绩和平均成绩。

用循环程序将物理地址10000H到100FFH单元清零。

设当前数据段寄存器的内容为1B00H,在数据段的偏移地址2000H单元内,含有一个内容为0FF10H和8000H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列。

试编写程序段查找从地址ASCII_STR开始的顺序256个单元的内容中是否有字符'*'若有程序转向FOUND,若没有则转向NOT_FOUND。

编写完整程序,功能是将VARW中的4位BCD码表示的一个十进制数分拆成4个一位的BCD码,每个占一个字节,存放到变量VARB中。

要求数的高位BCD码占高地址,低位占低地址。

编写一个程序,将变量ABC中的16位无符号数,用"除十取余"的方法转换成十进制数,要求结果用压缩BCD码保存在RESULT单元中。

编写一个完整程序计算365AH+9E6CH,结果存放于原被加数的位置。

要求写出完整的汇编语言程序

将一个16位二进制数转换为非压缩的BCD码,并将结果显示出来(16位二进制数在0~65535之间)。

从DATA1地址起有50个字节的带符号数,求其平均值并将结果存于AV单元,求出正数和负数之和,分别存于NP和NM字单元中。

编写一个完整的汇编程序(必要的段定义和伪指令),已知在数据段从BUFMEM开始的单元中连续存放着100个8位带符号数,寻找其中最小的数,结果存放到MINNUM单元中。

编写一个子程序(过程),将AL中存放的8位二进制数转换为ASCII码表示的等值字符串,并存放到DX寄存器中。

要求写出完成过程定义和流程图。

例如:

AL=5FH,则转换后的等值字符串为“5F”,且DH=‘5’,DL=‘F’。

判断STRING1和STRING2两个等长字符串是否相等,如相等在RESULT单元中置1,如不相等在RESULT单中置0,要求用串比较指令。

利用移位等指令实现将BL寄存器内容乘以10,乘积保存在BX。

用串操作指令将物理地址10000H到100FFH单元清零。

阅读下面一段程序,写出该程序完成什么功能。

XORDX,DX

L1:

MOVAH,1

INT21H

CMPAL,'$'

JZBACK

CMPAL,30H

JBL1

CMPAL,39H

JAL1

ANDAL,0FH

ADDDL,AL

ADCDH,0

JMPL1

BACK:

HLT

BUF1DB-1,2,-3,4,-5,6,-7,8,-9

XORBX,BX

MOVSI,0

MOVCX,9

LOP:

MOVAL,BUF1[SI]

TESTAL,80H

JZK

INCBH

JMPKK

K:

INCBL

KK:

INCSI

LOOPLOP

①上述程序的功能是

②当上述指令执行完后(BL)=_________H;(BH)=_________H

MOVCX,10

MOVBX,1

ANDAX,0

NEXT:

ADDAX,BX

INCBX

LOOPNEXT

MOVDX,AX

①上述程序的功能是

②当上述指令执行完后(DX)=________H;(CX)=________H

阅读下面一段程序,写出该程序完成什么功能。

MOVAX,1000H

MOVDS,AX

MOVSI,2000H

MOVCX,100

MOVAL,[SI]

LP:

CMPAL,[SI+1]

JGENEXT

MOVAL,[SI+1]

NEXT:

INCSI

LOOPLP

MOV[2100H],AL

MOVAX,4C00H

INT21H

阅读下面一段程序,写出该程序完成什么功能。

ASCIISDB6DUP(?

MOVBX,OFFSETASCIIS

MOVAL,46H

MOVCX,6

LOP:

MOV[BX],AL

DECAL

INCBX

LOOPLOP

程序运行后从ASCIIS开始的6个字节中依次序放的什么数据?

与这些数据对应的ASCII码字符是什么?

阅读下面一段程序,写出该程序执行后AX寄存器中的内容。

TABDW10H,20H,30H,40H

ENTRYDW3

.

.

.

LEABX,TAB

ADDBX,ENTRY

MOVAX,[BX]

(AX)=________

阅读下面一段程序,写出该程序完成什么功能。

MOVCL,4

SHLDX,CL

MOVBL,AH

SHLAX,CL

SHRBL,CL

ORDL,BL

阅读下面一段程序

MOVAX,SEGBUFFER1

MOVDS,AX

MOVSI,OFFSETBUFFER1

MOVDI,OFFSETBUFFER2

MOVCX,10

AGAIN:

MOVAX,[SI]

ADD[DI],AX

ADC[DI+2],0

ADDSI,2

LOOPAGAIN

请问:

(1)本程序实现的功能是什么?

(2)结果在哪里存放?

阅读下面一段程序,写出该程序完成什么功能。

PUSHDS

POPES

CLD

MOVSI,OFFSETSOURCE

MOVDI,OFFSETDEST

MOVCX,100

AGAIN:

MOVSW

DECCX

JNZAGAIN

HLT

有一个程序,目的是要在屏幕上显示"WindowsNTWorkstation3.51",但是程序有错,请指出其错误所在并指出修改方法,源程序如下

CODESEGMENT

ASSUMECS:

CODE,DS:

CODEMOVDX,MSG

MAINPROCMOVAX,9

MSGDW"WindowsNTWorkstation3.51"INT21H

START:

PUSHESRET

PUSHAXMAINENDS

MOVAX,CSCODEENDP

MOVDS,AXENDMAIN

已知符号函数求值公式为:

-1当X<0

Y=SNG(X)=0当X=0

1当X>0

下列程序段欲求符号函数值Y,试改正其中的错误指令,不允许改变指令和标号位置,假设X已存放在AL中。

ANDAL,AL

JSNEGV

JZZER

MOVY,0

JMPDONE

ZER:

MOVY,-1

JMPDONE

NEGV:

MOVY,1

DONE:

RET

本程序的功能是:

在递增的有序字节数组中插入一个正整数,并按指定的数组个数存入内存区中。

假设数组元素均为正数。

例如,将02H插入下面的数组中:

01H,03H,04H,05H,....,10H,11H

结果为01H,02H,03H,04H,05H,....,10H

运算结果要求从RESULT开始存放。

填空使程序完整,填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数)。

NEQU10

DSEGSEGMENT

MINDB-1

SOURCEDBNDUP(?

XEQU2;插入的数

RESULTDBNDUP(0)

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

MOVES,AX

LEABX,SOURCE

MOVSI,N-2

ADDBX,SI

MOVSI,0

MOVAL,X

LP:

CMP__,[BX+SI]

JGEINS

MOVDL,[BX+SI]

MOV[BX+SI+1],___

DEC_____________

JMPLP

INS:

MOV_________,AL

CLD

LEASI,SOURCE

LEADI,RESULT

MOVCX,N

___MOVSB

RET

STARTENDP

CSEGENDS

ENDSTART

下列程序的功能是:

内存中连续存放着十个字节数,需对它们进行加密,其方法为:

如某个数(两位十六进制数X1X2表示)的高位十六进制数X1大于或等于低位十六进制数X2,则低位十六进制数X2用X1-X2代替;如某个数的高位十六进制数X1小于低位十六进制数X2,则高位十六进制数X1用X2-X1代替。

将加密后的结果存入内存。

例如:

内存中有41H,46H…

结果43H,26H…

转换结果要求从RESULT开始存放,填空源程序使其完整,填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数)。

NEQU10

DATASEGMENT

SOURCEDBNDUP(?

);顺序存放十个字节数

RESULTDBNDUP(0);存放结果

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

LEADI,RESULT

LEASI,SOURCE

MOVCX,10

AGN1:

MOVAL,[SI]

MOVAH,AL

ANDAL,0FH

ANDAH,0F0H

MOVDX,4

AGN2:

SHRAH,1

________________

JNZAGN2

CMPAH,AL

________________

MOVBL,AL

SUBBL,AH

MOVAH,BL

JMPSTORE1

G1:

MOVBH,AH

SUBBH,AL

MOV___,BH

STORE1:

MOVDX,4

AGN3:

___AH,1

DECDX

JNZAGN3

___AH,AL

MOV[DI],AH

INCDI

INCSI

LOOPAGN1

RET

STARTENDP

CODEENDS

下列程序其功能是:

内存中连续存放着两个无符号字节数序列Ak和Bk(k=0,…,9),求序列Ck,Ck=Ak×Bk(Ck以字的形式按C0,…,C9的顺序连续存放)。

例如:

序列Ak为FFH,80H,7FH,00H,…;

序列Bk为FFH,80H,01H,02H,…。

则结果Ck为FE01H,4000H,007FH,0000H,…。

运算结果要求从RESULT开始存放,填空使程序使其完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可)。

NEQU10

DATASEGMENT

SOURCEDBN*2DUP(?

RESULTDWNDUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

________________,OFFSETRESULT

MOVBX,0

_________________

PRO:

________________,SOURCE[BX+N]

________________

MOV[DI],AX

ADDDI,2

INCBX

_______________

JNZPRO

RET

STARTENDP

CODEENDS

ENDSTART

下列程序的功能是:

内存中连续存放着20个ASCII字符,如果是小写字母a至z之间的字符,请把它们转换成相应的大写字母的ASCII字符(否则不作转换)并统计原20个ASCII字符中字符"z"的个数。

转换结果(包括不作转换的a~z之间的原ASCII字符)按序存入内存中,之后存放原20个ASCII字符中为字符"z"的ASCII字符的个数(用一个字节表示)。

例如:

内存中有30H('0'),31H('1'),61H('a'),41H('A'),7AH('z'),…

结果为30H,31H,41H,41H,5AH,…,后跟用一个字节表示的原20个ASCII字符中为字符"z"的个数

运算结果要求从RESULT开始存放,填空使程序完整(空白已用横线标出,每行空白一般只需一条指令,但采用功能相当的多条指令亦可)。

NEQU20

DATASEGMENT

SOURCEDBNDUP(?

RESULTDBN+1DUP(0)

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVDI,OFFSETRESULT

MOVBX,0

MOVDL,0

MOVCX,N

PRO:

MOVAL,SOURCE[BX]

CMPAL,61H

__KEEP;<'a'

CMPAL,7AH;>='a'

JNBEKEEP;>'z'

CMPAL,79H;<='y'

JBE____

INCDL

NINC:

SUBAL,___

MOV[DI],AL

INCDI

JMP____

KEEP:

MOV[DI],AL

__________________

JUMP:

INCBX

DECCX

JNZPRO

_________________

RET

STARTENDP

CODEENDS

ENDSTART

本程序的功能是:

计算10×3矩阵中每一行元素(八位二进制数)之和,并将其存放在指定的内存区中。

例如:

内存中有0,0,0(第1行),1,1,1(第2行),.....,9,9,9(第10行)

结果为0000H,0003H,...,001BH

计算结果要求从RESULT开始存放,填空使程序完整,填空处已经用横线标出,每个空白一般只需要填一条指令或指令的一部分(指令助记符或操作数)。

NEQU30

IEQU10

JEQU3

DSEGSEGMENT

SOURCEDBNDUP(?

RESULTDWN/3DUP(0)

DSEGENDS

CSEGSEGMENT

ASSUMECS:

CSEG,DS:

DSEG

STARTPROCFAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

MOVES,AX

LEASI,SOURCE

LEADI,RESULT

MOVBX,1

LPI:

MOVDX,0

MOVCX,1

LPJ:

MOVAL,[SI]

_______________

ADDDX,AX

INC__

I

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

当前位置:首页 > 自然科学 > 数学

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

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