汇编语言程序例题Word下载.docx
- 文档编号:21387668
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:16
- 大小:186.49KB
汇编语言程序例题Word下载.docx
《汇编语言程序例题Word下载.docx》由会员分享,可在线阅读,更多相关《汇编语言程序例题Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
CWD->
;
(Z)符号扩展
oADDCX,AX
ADGBX.DX。
a:
(BX:
CX)+(DX:
(BX:
CX)
SUBCX,540
SBB^BX>
:
CX)—540^(BX:
oMOV°
AX,V
CWD-:
(V)符号扩展
SUBAX,CX
oSBBDX,BX
<
(DX:
AX)—(BX:
CX)->
(DX:
AX)
IDIVX-:
AX)/X
MOVW,AX巧商一>
W
MOVW+2,DX。
余数DX->
W+2
MOVA1L4CII
4NT21II
CODEENDS-:
退出DOS状态
ENDSTART
【例5。
2]已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,査表结果放在变量ENGLISH中。
编写程序如下:
STACKSEGMENTSTACKoDBo200DUP(0)
STACKENDS
DATASEGMENT
TABDB80,85,86,71,79,96
DB83,56,32.66,78,84
oNODB10
£
NGLISToDB?
DATAENDS
CODESEGMENT
ASSUMEDS:
DATA,SS:
STACK,CS:
CODE
BEGIN:
MOVoAX.DATA
-MOVDS,AX
LEA°
BX,TAB
oMOVoAL,NO
DEDAL
oXLAToTAB
^MOVENGLISH,AL
“MOVAH,4CH
-INT21H
CODE。
ENDBEGIN
3】已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。
题目分析:
根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;
要计算一个数的相反数,需要完成减法运算,即用0减去这个数.8086/8088指令系统中有专门的求相反数的指令NEG。
XDB-25
aRESULTDB?
CODESEGMENT
“ASSUMEDS:
DATA,CS:
CODE
START:
MOVAX.DATA
MOVoDS,AX初始化
MOVAL.X;
X取到AL中
TESTAL,80H;
测试AL正负
JZNEXT为正,转NEXTNEGAL否则AL求补
NEXT:
oMOVoRESULT,AL:
送结果
oMOVoAlh4CH
INT2UHa;
返回DOS
CODEENDS
END°
START。
4]编写计算下面函数值的程序:
1x>
0
Y=4X=0
n—1oX(0
设输入数据为X、输岀数据Y,且皆为字节变量。
程序流程图如下图所示。
例6・4程序流程圏
)DATASEGMENT
XDB—25
YDB?
ASSUMECS:
CODE.DS:
DATA
START:
MOVAX,DATA
MOVDS,AX:
初始化
MOVAL,X;
X取到AL中
CMP^AL,0;
A1中内容和0比较
JGEBIG-;
大于等于0,转BIG
oMOVBL,-U;
否则为负数,"
送BL
JMPoEXIT;
转到结束位置
BIG:
JEoEE^;
Al中内容是否为0,为0转EE
小4OVBL」;
否则为大于0,1送BL
JMPEXIT;
转到结朿位苣
EE:
MOVBL,0:
0送BL
EXIT:
MOVY.BIxBL中内容送Y单元
MOVAH,4CH
INT21Hr程序结束
CODEENDS
ENDSTART。
汇编结束
【例5.5]试编一程序,求三个带符号字数据中的最大值.并将最大值存入MAX字单元中。
设三个带符号数分别在三个字变量X、Y.Z中存储。
程序流程图如下图所示
ZfAX屮丫卩
AX^MAX*1
STACKoSEGMENTSTACK
DB200DUP(O)
STACKoENDS
DATAoSEGMENT
X。
DW00ABH
Y“DW-5
ZDW200
MAX-DW?
DATAoENDS
CODE-SEGMENT
DATA.SS:
STACK.CS:
CODE
START>
MOVoAXJ)ATA
ooMOV.DS,AX
ooMOVoAX,X
o
CMP
AX,Y
X>
Y?
JGoLl
.MOV
AX.Y。
;
Y>
Z?
AX,Z
oJGoEXIT
L2:
MOVoAX,Z
odMPExrr
Ll:
-CMPAXZ:
-JLE-L2
EXIT:
MOVoMAX,AX
oMOVAH.4CH
INT2bH
CODEoENDS
-ENDSTART
6]设某程序有8路分支,试根据给定的N值(1~8),将程序的执行转移到英中的一路分支。
程序流程如图下所示。
TABoDWP1.P2,P3,P4,P5・P6,P7,P8
N。
DB5
DATABENDS
STACKSEGMENT
oDB200DUP(0)
CODECSEGMENT
oASSUMEDS:
DATA,SS:
STACK,CS:
CODE
START:
^MOVoAX.DATA
oMOVoDS,AX
I
OO:
MOV
AL,N
oDEL
AL
-ADD
AL,
NOV
BL,
MOV
BII,0
JMPTABfBX]
Pl:
・・・・.・
8:
JMPEXIT
P2:
……
JMPEXIT
P2>
!
oJMPEXIT
P3:
……
:
JMPoEXIT
!
P8:
o・•・・・.
i
EXIT:
^MOVoAH.4CH
oINT21H
CODEoENDS
ENDSTART
7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统汁苴中正元素的个数。
显然,每个元素为一个8位有符号二进制数,统计苴中正元素的个数可用循环程序实现。
其程序流程图如下图所示。
例5.8]编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止.统计被累加的自然数的个数送CN单元累加和送SUM。
流程图如下图所示。
例6.8稈序流程图
小ATASEGMENT
oSUMDW?
CNDW?
DATABENDS
CODESEGMENT
^ASSUMECS:
CODE.DS:
MOVAX,DATA
MOVDS.AX;
MOVAX,00送AX
MOVBX,00;
送BX
LP:
oINCBX:
BX力[11
ADDAX.BX;
求累加和
oCMPAX,1000^:
比较
oJBELP。
定1000转
oMOVSUM.AX
MOVCN.BX:
MOVAIL4CH
4NT2111;
CODE°
ENDSTART:
汇编结朿
【例5.9]在以BUF为首址的字存储区中存放有N个有符号数,现需将它们按大到小的顺序排列在BUF存储区中,试编写其程序.
我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;
如次序不对则使这两个数交换位豊。
可以看出,第一遍需比较(N—1)次,此时,最小的数已经放到了最后;
第二遍比较只需考虑剩下的(N-1)个数,即只需比较(N—2)次;
第三遍只需比较(N—3)次,……整个排序过程最多需(N-1)遍。
如下面的4个数即是采用冒泡排序比较的例子。
数。
10。
8169032
第一遍101690328
第二遍Id9032。
108
第三遍。
9032。
1610。
8
程序流程图如图5.9所示。
DATAoSEGMENT
BUFDW3厂4,6,7,9,2,0,-8—9—10,20
N=($-BUF)/2
DATAoENDS
STACKSEGNMENTSTACK
DB200DUP(0)
CODESEGMENT
ASSUMECS:
CODE・DS:
DATA,SS:
STACK
MOVDS.AX
oMOV^CX.N
DECCX
LOOP1:
MOV.DX.CX
MOVBX,0
LOOP2:
,MOVAX,BUF[BX]
MPAX.BUF[BX+2]
dGE^L
XCHGAX,BUF[BX+2]
oMOVBUF[BX],AX
LaADDBX,2
DEGCX
ojNEoLOOP2
oMOVoCX^DX
LOOPoLOOPl
oMOVAH.4CII
oINT21II
COD&
ENDS
ENDSTART
程序运行后,BUF区中的内容如下:
20,9,7,6,3,2,0,一4,・8,-9,—10
若要对N个无符号数按由大到小的顺序排列,只需将指令“JGEL“改为“JAEL“即可。
【例5.10]将一个给泄的二进制数按位转换成相应的ASCII码字符串,送到指左的存储单元并显示。
如二进制数10010011转换成字符串为40010011\要求将转换过程写成子程序,且子程序应具有较好的通用性.而必须能实现对8倍和16倍二进制数的转换。
入口参数:
DX存放待转换的二进制数
CX存放待转换数的位数(8位或16位)
・DI存放ASCII码首地址
出口参数:
转换后的字符串存放在以DI作指针的字节存贮区中
程序淸单:
DATASEGN4ENT
□NUN48DB93J1
oNUMl6DW0ABCDH
ASCBUFDB2°
0DUP(0)
CoDEoSEGMENT
ASSUMEDS:
DATA,CS:
CODE,SS:
STACKSTART:
MOVoAX.DATAoMOVDS,AX
MOVoDX,0
^MOVoDL,NUM8:
转换二进制数送DX
MOVCX,8。
置位数8
LEADLASCBUF:
字符串首址->
DI
CALL。
BTASQ;
调用子程序BTASCoMOV[DI].BYTEPTRODHMOV(DI+1].BYTEPTR0AH
MOV(DI+2J.BYTEPTR
LEADX,ASCBUF
MOVoAH.9
4NT21H
MOVDX,NUM16oMOVoCXJ6o;
置位数16oLEA.DLASCBUF
CALLBTASC
显示转换后的字符串
MOV[DLLBYTEPTR0DHoMOV4DL+l],BYTEPTROAHMOV。
[DL+2],BYTEPTR'
$:
LEAoDX,ASCBUF
oMOVAH.9
BTASCPROC
PUSH°
AX。
保存AX
MOVAL.0oCMP^CX,8;
比较8位数JNELh:
直接转换16位数MOV。
DIIQL;
8位数转换送DH
LIpROLDX,,1:
DX最髙位移入CFjRCOAL,h;
CF移入AL最低位ADDAL,30HoMOVo[DI],AL
INCDI
oLOOPL1
oPOPAX
RET
BTASCENDP
CODE£
NDS
oENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序 例题