24个汇编实例小程序Word格式.docx
- 文档编号:17666375
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:55
- 大小:26.97KB
24个汇编实例小程序Word格式.docx
《24个汇编实例小程序Word格式.docx》由会员分享,可在线阅读,更多相关《24个汇编实例小程序Word格式.docx(55页珍藏版)》请在冰豆网上搜索。
从键盘上输入一个十进制数,以十六进制数显示出来。
要求子程序用寄存器参数传送方法
试编制一个程序,把bx寄存器中的二进制数用十六进制数的形式在屏幕上显示出来
代码:
1.逆序输出字符串“BASEDADDRESSING”
s1segmentstack;
定义栈段s1
dw100dup();
定义栈空间为100
toplabelword;
top指向栈顶
s1ends
s2segment;
定义数据段s2
sdb'
BASEDADDRESSING'
'
$'
;
定义字符串s
S2ends
s3segment;
定义代码段s3
assumecs:
s3,ds:
s2,ss:
s1
mainprocfar
movax,s1;
栈初始化——
movss,ax
leasp,top;
——栈初始化
movax,s2;
数据段初始化——
movds,ax;
——数据段初始化
movsi,15
l:
movdl,s[si];
dl获取字符串s的最后一个(从零开始的第十五个字符)
movah,2;
调用int21h2号功能输出dl上的值
int21h
decsi;
寄存器减一,准备获取下一个字符
cmpsi,0
jal
movah,4ch;
终止
mainendp
s3ends
endmain
2.从键盘上输入两个数,分别放到x,y单元,求出它们的和
s1segmentstack
dw100hdup()
toplabelword
s2segment
h1db'
Pleaseinputx:
'
提示输入
h2db'
Pleaseinputy:
h3db'
z=x+y:
提示输出
crlfdb0dh,0ah,24h;
定义回车换行
xdw
ydw
s2ends
s3segment
s3
初始化——
leasp,top
movax,s2
movds,ax;
——初始化
leadx,h1;
int21h9号功能输出“提示输入x”的字符串
movah,9
xorbx,bx;
bx清零,即把bx置零
InputX:
movah,1;
输入一个字符
cmpal,0dh;
判断时候为“回车”字符
jzexit1;
如果是回车字符就跳转到exit1
cmpal,30h;
和30h(即字符0的asii值)比较
jlexit1;
如果输入字符小于'
0'
,跳转到exit1
cmpal,39h;
和39h(即字符9的ascii值)比较
jgexit1;
如果输入字符大于'
9'
,跳转到exit1
subal,30h;
al减去30h,输入字符转化成数字(从这一行开始到后面的addbx,ax为输入字符转化为数字的处理方法)
cbw;
al扩充为ax
xchgax,bx
movcx,10
mulcx
xchgax,bx
addbx,ax;
subal,30h开始到这一行为输入字符转化为数字的处理方法
jmpInputX
exit1:
movx,bx;
把输入的存于bx的放到x中
leadx,crlf
leadx,h2
xorbx,bx
InputY:
和InputX类似,输入y
movah,1
cmpal,0dh
jzexit2
cmpal,30h
jlexit2
cmpal,39h
jgexit2
subal,30h
cbw
addbx,ax
jmpInputY
exit2:
movy,bx;
把输入的存于bx的放到y中
movbx,x
addbx,y;
此时bx为两数加和
int21H
leadx,h3
xorsi,si;
si清零,用作计数
movax,bx;
把和放到ax上
l4:
movcl,10;
把和连续除以10知道和变为零,余数依次进栈
divcl
movdl,ah
movdh,0
pushdx
incsi
movah,0;
重要,不能漏写
cmpal,0
jnzl4
l5:
popdx;
余数依次出栈
adddl,30h;
余数转换为显示的余数字符
movah,2;
输入余数字符
decsi
jnzl5
movah,4ch
3.是编写一段程序,要求在长度为10的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域,并分别显示up、down数组的个数和数组的数字
thenumofuparrayandtheuparrayare(printsindecimalism):
thenumofdownarrayandthedownarrayare(printsindecimalism):
crlfdb0dh,0ah,24h
arraydb0,50h,11h,61h,22h,72h,33h,73h,41h,74h,'
定义数组array
updb10dup();
定义up数组
downdb10dup();
定义down数组
movax,s1
movds,ax
movsi,0
movdi,1
movbp,1
repeat:
cmparray[si],42h;
把array数组中小于42h的值放到down数组里,大于42h的值放到up数组里面
jbdownarray
movdl,array[si]
movup[bp],dl
cmpsi,10
jzexit1
incbp
jmprepeat
downarray:
movdown[di],dl
incsi
incdi
subdi,1
jmpexit
subbp,1
exit:
movdx,bp;
把分配好的up数组和down数组在其有效数字后面添加'
,便于后面的输出结束
movup[0],dl
movup[bp],'
movdx,di
movdown[0],dl
movdown[di],'
movcl,10
leadx,h1
PrintUparray:
cmpup[si],'
jznext
moval,up[si]
callprint
jmpPrintUparray
next:
xorsi,si
PrintDownArray:
cmpdown[si],'
jzatend
moval,down[si]
jmpPrintDownArray
printprocnear;
print为输出十进制输出某个数的子程序
movdi,0
rediv:
movah,0
jnzrediv
break:
popdx
adddl,30h
movah,2
decdi
cmpdi,0
jnzbreak
movdl,'
'
ret
printendp
atend:
4.键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出
Pleaseinputastring:
Thechangedstringis:
tempdb
jzexit
cmpal,'
a'
jlputin
z'
jgputin
subal,20h;
把小写字符变为大写字符
putin:
movtemp[si],al;
把字符放到temp数组里
jmpl
leadx,crlf;
输出tmp数组
movtemp[si],'
leadx,temp
5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符
Pleaseinputalowercase:
Thethethreecharsare:
jll
jgl
movcl,al
deccl
movdl,cl;
输出前导字符
inccl
输出该字符
输出后导字符
int21h
6.把一个包含20个数据的数组M分成两组:
thepositivenumberis:
thenegativenumberis:
arraydw50h,-11h,61h,-22h,72h,-33h,73h,-41h,74h,21h,67h,-90h,73h,77h,-1h,-89h,-11h,61h,-22h,20h,'
movbx,0
movdx,array[si]
cmpdx,0
jladdlow;
有符号数比较用jl
addsi,2
cmpsi,40
addlow:
incbx
movax,bx
movax,20
subax,bx
jmpatend
打印数字字符的子程序
movah,0
jnzrepeat
l2:
jnzl2
7.打印输出首地址为data的20个字数组中的最小偶数
theminevennumberis:
datadw50,-11,61,-22,72,-33,73,-41,74,21,67,-90,73,77,-1,-89,-11,61,-22,20,'
movbx,65534;
bx存最小数,初始令最小值置为65534
movcl,100
movdl,2
movax,data[si]
cmpax,0
jnll4
negax;
如果是负数,则求补
moval,ah
divdl
cmpah,0
jnzl1
cmpbx,data[si];
比较最小值和数组中的每个数
jll1;
如果数组中的数大于最小值跳转到l1
movbx,data[si];
如果数组中的数小于最小值则将其赋给最小值
l1:
jmpl2
cmpbx,0
jnll5
negbx
-'
callprint;
调用子程序输出最小值
printprocnear
l3:
jnzl3
8.输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“nomatch”
Pleaseinputthefirststring:
Pleaseinputthesecondstring:
h3db'
MATCH'
h4db'
NOMATCH'
str1db50,,50dup('
)
str2db50,,50dup('
leadx,str1
movah,0ah
leadx,str2
movdl,str1+1;
str1+1为str1实际的字符个数
cmpdl,str2+1;
str2+1为str2实际的字符个数
jnzl
movsi,2
movdl,str1[si]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 24 汇编 实例 程序