汇编程序荟萃.docx
- 文档编号:3520209
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:16
- 大小:18.97KB
汇编程序荟萃.docx
《汇编程序荟萃.docx》由会员分享,可在线阅读,更多相关《汇编程序荟萃.docx(16页珍藏版)》请在冰豆网上搜索。
汇编程序荟萃
1.两字节的二进制数加法:
DATASEGMENT
XDB11H,22H;两字节运算数
YDB33H,44H
ZDB?
,?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,X;取加数低位
ADDAL,Y;两数相加
MOVZ,AL;存回Z单元
MOVAL,X+1;取加数高位
ADCAL,Y+1;带进位加
MOVZ+1,AL;存回Z单元
MOVAH,4CH;结束本程序,返回程序的调用者
INT21H
CODEENDS
ENDSTART
2.在内存TAB开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0≤X≤15),求X的平方值,并把结果存放在Y单元中。
DATASEGMENT
TABDB0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225
XDB4
YDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEABX,TAB
MOVAL,X
XORAH,AH
ADDBX,AX
MOVAL,[BX]
MOVY,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3.判断X单元数据的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0
1.分析:
判断数据的奇偶据我所知,有两种方法:
a。
利用testal,00000001B,测试后,判断zf,zf=1,则该数为偶数,否则为奇数;b,将al右移一位,判断cf=1,则为奇数。
我们采用第一种方法“test法”。
实验用程序:
DATASEGMENT
XDB23H;定义数据,申请内存
YDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA;段的分配
START:
MOVAX,DATA
MOVDS,AX;初始化DS
MOVAL,X
TESTAL,00000001B
JZOUSHU;理解JZ:
判断结果的ZF是否是1,若是1,则跳转到符号地址为OUSHU处,否则顺序执行
MOVY,0FFH
JMPEXIT
OUSHU:
MOVY,00
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.比较两个8位无符号数的大小、并把较小的数存人MIN单元的程序。
假设这两个数分别存放在FIRST和SECOND单元中。
1.分析:
利用JA的跳转原理(jumpabove),比较大小
2.实验用程序:
DATASSEGMENT
FIRSTDB33H定义字节,预留内存
SECONDDB44H
MINDB?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS段的分配
START:
MOVAX,DATAS初始化DS
MOVDS,AX
MOVAL,FIRST
MOVAH,SECOND
CMPAL,AH
JALP1
MOVMIN,AL
JMPLP2
LP1:
MOVMIN,AH
LP2:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
5.设在内存中连续存放了5个字型无符号数,试编写程序求出他们之和。
1.分析:
2.实验用程序:
DATASSEGMENT
TABDW1122H,5566H,1133H,1234H,4455H
SUMDW?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAX,WORDPTRTAB
XORBX,BX;BX存放累加和
MOVCX,5;设置循环次数
LEASI,TAB;取数据的初始地址
AGAIN:
MOVAX,[SI];从内存中取出数据
ADDBX,AX;BX+AX→BX
INCSI
INCSI;修改地址
;JMPAGAIN
DECCX
JNZAGAIN;CX-1→CX,若CX<>0,Z
MOVSUM,BX
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
6.从自然数1开始累加,直到累加和大于1000为止,统计被累加的自然数的个数,并把统计的个数送入n单元,将累加和送入sum单元。
分析:
利用n与sum做目的存储的结果,让相加的和与1000作比较,从而进行跳转
程序:
DATASSEGMENT
ndw?
sumdw?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
movax,0
movbx,0
movcx,0
again:
incbx
addax,bx
inccx
cmpax,1000
jbeagain
movn,cx
movsum,ax
MOVAH,4CH
INT21H
CODESENDS
7.内存地址BUFFER开始存放着10个带符号字节数组,编写程序求数组中正数、零和负数的个数,并分别将它们存于PLUS开始的单元。
分析:
预置三个计数器分别为BH,BL,DL,分别存储正数,负数,零的个数,je做相等则跳转的判断,js做负的判断
DATASSEGMENT
org0100h
bufferdb1,-4,16,0,36,-49,-2,7,-8,34
plusdb3dup(?
)
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
movbx,0
movdl,0
leasi,buffer
movcx,10
lp1:
cmpbyteptr[si],0;比较内存地址si中存放的是否是零
jezero
jslp2;判断是否是负数,若是则跳转到lp2
incbh
jmpnext
lp2:
incbl
jmpnext
zero:
incdl
next:
incsi
looplp1
movplus,bh
movplus+1,bl
movplus+2,dl
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
8.内存中有一串以“$”结尾的字符串,统计其中“A”出现的次数。
分析:
DATASSEGMENT
bufferdb'ds123AbcA$'
ndb?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
xorcl,cl
leasi,buffer
again:
moval,[si]
cmpal,'$'
jzlp1
cmpal,'A'
jzlp2
lp3:
incsi
jmpagain
lp2:
inccl
jmplp3
lp1:
movn,cl
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
9.在内存单元中存放了两个字符串STRINGl和STRING2(设其长度相同),试编写—程序,比较它们所含的字符是否相同。
若相同,则显示'Match';否则,显示'Nomatch'。
程序:
DATASSEGMENT
string1db'jkasfa12up'
string2db'ihfjhhjdfh'
countequ$-string2
buffer1db'nomatch$'
buffer2db'match$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
movcx,count
leadi,string1
leasi,string2
lp1:
movbl,[di]
cmpbl,[si]
jzlp2
leadx,buffer1
movah,09h
int21h
jmpexit
lp2:
deccx
jnzlp3
leadx,buffer2
movah,09h
int21h
jmpexit
lp3:
incsi
incdi
jmplp1
exit:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
10.输入—个字符串STRING(长度不超过8字节)。
换行后,再输出“Theinputstringis:
<输入串内容>”。
数据段可定义如下:
DATASEGMENT
MAXLENDB9
ACTLENDB?
STRINGDB9DUP(?
)
MESSGDB0DH,0AH,‘Theinputstringis:
$’
DATAENDS
提示:
程序可采用0AH功能调用输入字符串,用09H功能调用输出字符串。
程序:
DATASSEGMENT
maxlendb9;定义内存缓冲区
actlendb?
stringdb9dup(?
)
mussgdb0DH,0AH,'theinputstringis:
$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
leadx,maxlen
movAH,0AH;输入字符串指令
int21H
leadx,mussg
movAH,9;输出字符串
int21H
movCL,actlen
leasi,[string]
again:
movAH,2;输出单个字符
movDL,[si]
int21H
incsi
loopagain;循环输出
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
11.********************程序:
CODESSEGMENT
assumeCS:
CODES
START:
movbx,5
next:
movcx,4
again:
movdl,'*'
movah,02h
int21h
loopagain
movdl,0D
movah,02h
int21h
movdl,0Ah
movah,02h
int21h
decbx
jnznext
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
12.*
**
***
****
*****
DATASSEGMENT
Adb0DH,0AH,'$'
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
movbx,1
movcx,1
again:
movah,02H
movdl,'*'
int21H
loopagain
movDX,offsetA
movAH,09
int21H
incbx
movcx,bx
cmpbx,6
JZLP1
JMPagain
LP1:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
13.设有10个学生的成绩分别为76,69,84,90,73,88,99,63,100,80。
试编写程序统计60~69,70~79,80~89,90~99和100分的人数,分别存放到S6,S7,S8,S9,S10单元中
DATASSEGMENT
gradedb76,69,84,90,73,88,99,63,100,80
s6db?
s7db?
s8db?
s9db?
s10db?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
movCX,10
leasi,grade
again:
movDH,[si]
cmpDH,100
jzlp1
cmpDH,90
JAlp2
cmpDH,80
JAlp3
cmpDH,70
JAlp4
cmpDH,60
JAElp5
next:
incsi
decCX
jnzagain
jmpexit
lp1:
incs10
jmpnext
lp2:
incs9
jmpnext
lp3:
incs8
jmpnext
lp4:
incs7
jmpnext
lp5:
incs6
jmpnext
exit:
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
14.内存单元MEM开始存放了一个长度为10的无符号字节数组,编写程序找出其中的最大值和最小值并存于MAX和MIN单元。
DATASSEGMENT
MEMDB1,2,3,4,5,6,7,8,9,10
MAXDB?
MINDB?
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVCX,10
LEASI,MEM
MOVBL,[SI]
MOVMAX,BL
MOVMIN,BL
LEASI,MEM
LEADI,MAX
LEABP,MIN
AGAIN:
MOVBL,[SI]
CMPBL,[DI]
JALP1
CMPBL,[BP]
JBLP2
LP1:
MOVMAX,BL
JMPLP3
LP2:
MOVMIN,BL
LP3:
INCSI
LOOPAGAIN
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
15.将字符串转换成大写字母字符串。
设字符串的首地址为STRING,字符串的长度在LENGTH单元内。
DATASSEGMENT
STRINGDB'Iamastudent!
$'
LENGTH1DB15
DATASENDS
CODESSEGMENT
ASSUMECS:
CODES,DS:
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVCX,10
LEASI,STRING
AGAIN:
MOVDL,[SI]
CMPDL,'a'
JBLP1
CMPDL,'z'
JALP1
SUBDL,32
MOV[SI],DL
LP1:
INCSI
LOOPAGAIN
LEADX,STRING
MOVAH,09H
INT21H
MOVAH,4CH
INT21H
CODESENDS
ENDSTART
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编程序 荟萃