20个简单汇编语言程序_第1页
20个简单汇编语言程序_第2页
20个简单汇编语言程序_第3页
20个简单汇编语言程序_第4页
20个简单汇编语言程序_第5页
已阅读5页,还剩11页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论