版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20个简单汇编语言程序说明:所有程序均适配8086汇编(DOS环境),代码简洁、功能基础,适合入门练习,每个程序均包含核心功能注释,可直接运行。1.程序1:输出字符串“Hello,Assembly!”asm
;输出字符串
datasegment
msgdb'Hello,Assembly!',0Dh,0Ah,'$';字符串,0Dh,0Ah是换行,$是结束标志
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax;初始化数据段
leadx,msg;取字符串地址
movah,09h;09h功能:输出字符串
int21h;调用DOS中断
movah,4Ch;4Ch功能:程序退出
int21h
codeends
endstart2.程序2:两个立即数相加(1+2),输出结果asm
;1+2,输出结果
datasegment
msgdb'1+2=','$'
resdb?,'$';存储结果
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
leadx,msg
movah,09h
int21h;输出“1+2=”
moval,1;第一个数
addal,2;1+2,结果存在al
addal,30h;转换为ASCII码(数字0-9对应30h-39h)
movres,al;存储结果
leadx,res
movah,09h
int21h;输出结果
movah,4Ch
int21h
codeends
endstart3.程序3:从键盘输入一个字符,再输出该字符asm
;输入一个字符,输出该字符
datasegment
msgdb'请输入一个字符:','$'
msg2db0Dh,0Ah,'你输入的字符是:','$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
;提示输入
leadx,msg
movah,09h
int21h
;读取键盘输入(01h功能)
movah,01h
int21h;输入的字符存在al中,同时自动显示在屏幕
movbl,al;保存输入的字符
;提示输出
leadx,msg2
movah,09h
int21h
;输出输入的字符(02h功能)
movah,02h
movdl,bl
int21h
movah,4Ch
int21h
codeends
endstart4.程序4:两个字节变量相加(5+7)asm
;字节变量相加:5+7
datasegment
adb5;第一个字节变量
bdb7;第二个字节变量
msgdb'5+7=','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
leadx,msg
movah,09h
int21h
moval,a;al=5
addal,b;al=5+7=12
addal,30h;转换为ASCII码
movres,al
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart5.程序5:输出换行符(简单换行)asm
;输出换行
datasegment
crlfdb0Dh,0Ah,'$';0Dh=回车,0Ah=换行
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
movah,09h
leadx,crlf
int21h;输出换行
movah,4Ch
int21h
codeends
endstart6.程序6:立即数减法(10-3),输出结果asm
;10-3,输出结果
datasegment
msgdb'10-3=','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
leadx,msg
movah,09h
int21h
moval,10;被减数
subal,3;10-3=7,结果在al
addal,30h;转ASCII码
movres,al
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart7.程序7:比较两个数大小(8和5),输出较大值asm
;比较8和5,输出较大值
datasegment
adb8
bdb5
msgdb'较大值是:','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
moval,a
cmpal,b;比较al和b(8和5)
jgegreater;若al>=b,跳至greater
moval,b;否则,al=b(5)
greater:
addal,30h
movres,al
leadx,msg
movah,09h
int21h
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart8.程序8:循环输出3次“Hello”asm
;循环3次输出Hello
datasegment
msgdb'Hello','$'
crlfdb0Dh,0Ah,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
movcx,3;循环次数=3
loop1:
leadx,msg
movah,09h
int21h;输出Hello
leadx,crlf
movah,09h
int21h;换行
looploop1;循环,cx自减1,直到cx=0
movah,4Ch
int21h
codeends
endstart9.程序9:将字节变量a的值赋给变量basm
;赋值:将a的值赋给b,输出b的值
datasegment
adb6
bdb?
msgdb'b的值是:','$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
moval,a;al=a(6)
movb,al;b=al(6)
leadx,msg
movah,09h
int21h
moval,b
addal,30h
movdl,al
movah,02h
int21h;输出b的值
movah,4Ch
int21h
codeends
endstart10.程序10:输出数字0-9(循环实现)asm
;循环输出0-9
datasegment
crlfdb0Dh,0Ah,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
moval,30h;ASCII码30h对应数字0
movcx,10;循环10次(0-9)
loop2:
movdl,al
movah,02h
int21h;输出当前数字
movdl,20h;空格(ASCII码20h)
movah,02h
int21h;输出空格
incal;al自增1(下一个数字)
looploop2;循环
leadx,crlf
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart11.程序11:简单乘法(3*4),输出结果asm
;3*4,输出结果(字节乘法)
datasegment
msgdb'3*4=','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
leadx,msg
movah,09h
int21h
moval,3;被乘数(字节)
movbl,4;乘数(字节)
mulbl;乘法:al*bl=ax,结果在al(3*4=12,小于255)
addal,30h
movres,al
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart12.程序12:简单除法(12/3),输出商asm
;12/3,输出商(字节除法)
datasegment
msgdb'12/3=','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
leadx,msg
movah,09h
int21h
moval,12;被除数(字节)
movbl,3;除数(字节)
divbl;除法:al/bl,商在al,余数在ah
addal,30h
movres,al
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart13.程序13:清空屏幕(DOS功能调用)asm
;清空屏幕
codesegment
assumecs:code
start:
movah,06h;06h功能:滚动屏幕(清空)
moval,00h;滚动行数(00h=清空全屏幕)
movbh,07h;空白处属性(黑底白字)
movch,00h;左上角行号
movcl,00h;左上角列号
movdh,18h;右下角行号(24行)
movdl,4Fh;右下角列号(79列)
int10h;调用BIOS中断(屏幕相关)
movah,4Ch
int21h
codeends
endstart14.程序14:设置光标位置(第5行,第10列)asm
;设置光标位置(5行10列)
codesegment
assumecs:code
start:
movah,02h;02h功能:设置光标位置
movbh,00h;页号(0页)
movdh,04h;行号(从0开始,04h=第5行)
movdl,09h;列号(从0开始,09h=第10列)
int10h;调用BIOS中断
;在光标位置输出字符A
movah,02h
movdl,'A'
int21h
movah,4Ch
int21h
codeends
endstart15.程序15:从键盘输入一个数字,输出其平方asm
;输入一个1-9的数字,输出其平方
datasegment
msgdb'请输入1-9的数字:','$'
msg2db0Dh,0Ah,'其平方是:','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
;提示输入
leadx,msg
movah,09h
int21h
;读取输入
movah,01h
int21h;输入字符存在al
subal,30h;转换为数字(ASCII码转十进制)
;计算平方(al*al)
mulal;al*al=ax,结果在al(1-9的平方≤81,小于255)
addal,30h;转ASCII码
movres,al
;输出结果
leadx,msg2
movah,09h
int21h
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart16.程序16:循环累加1-5,输出总和asm
;累加1-5,输出总和(1+2+3+4+5=15)
datasegment
msgdb'1+2+3+4+5=','$'
resdb?,'$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
moval,0;累加器初始化为0
movcx,5;循环5次(1-5)
movbl,1;初始值1
loop3:
addal,bl;al=al+bl
incbl;bl自增1
looploop3;循环
addal,30h;转ASCII码
movres,al
leadx,msg
movah,09h
int21h
leadx,res
movah,09h
int21h
movah,4Ch
int21h
codeends
endstart17.程序17:输出单个字符“X”asm
;输出单个字符X
codesegment
assumecs:code
start:
movah,02h;02h功能:输出单个字符
movdl,'X';要输出的字符
int21h;调用DOS中断
movah,4Ch
int21h
codeends
endstart18.程序18:判断一个数是否为偶数(判断6是否为偶数)asm
;判断6是否为偶数,输出结果
datasegment
adb6
msg1db'该数是偶数','$'
msg2db'该数是奇数','$'
dataends
codesegment
assumecs:code,ds:data
start:
movax,data
movds,ax
moval,a
testal,01h;测试最低位(0=偶数,1=奇数)
jnzodd;若最低位为1,跳至odd(奇数)
;偶数
leadx,msg1
movah,09h
int21h
jmpexit;跳至退出
odd:
;奇数
leadx,msg2
movah,09h
int21h
exit:
movah,4Ch
int21h
codeends
endstart19.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 伤口引流管感染的预防与管理
- 2023年大学语文备考题库及参考答案
- 中医护理措施
- 长治学院《广告学概论》2024-2025学年第二学期期末试卷
- 重庆市彭水县重点名校2025-2026学年联合模拟考试物理试题含解析
- 江苏省张家港市重点名校2026届初三4月中考模拟测试英语试题试卷含解析
- 湖北省襄阳四中学2026届中考冲刺七语文试题含解析
- 山东省滨州市北城英才校2025-2026学年高中毕业生二月调研测试英语试题含解析
- 江苏省盐城滨海县联考2025-2026学年中考适应性测试试卷(英语试题文)试题含解析
- 江苏省海门市重点达标名校2026届初三3月联考语文试题试卷含解析
- 航空研究生笔试题及答案
- 出版物设计课程
- 丝杆安装作业规范
- 公路路面施工技术实务培训
- 化工有限公司监护人培训考试试题及答案
- 2025年初级会计职称《经济法基础》精讲课件第1-4章
- 2026年皖西卫生职业学院单招职业技能测试题库新版
- 2025年全国高校辅导员职业技能大赛笔试测试卷及参考答案(国赛版)(共3套)
- 要素式申请执行文书-强制执行申请书模版
- 烟草专卖管理师二级专业能力试卷及答案
- 起重机制动器调整方法
评论
0/150
提交评论