ImageVerifierCode 换一换
格式:DOCX , 页数:64 ,大小:26.86KB ,
资源ID:12773911      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12773911.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(24个汇编实例小程序.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

24个汇编实例小程序.docx

1、24个汇编实例小程序24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和试编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把

2、它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100

3、h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,

4、则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。空行的行数由用户在主程序过键盘输入,并将行数放在ax寄存器中设有10个学生成绩分别是76, 69,84,73,88,99,63,100和80。试编写一个子程序统计60-69分,70-79分,80-89分,90-99分和100分的人数,并分别放到S6,S7,S8,S9,S10单元中编写子程序嵌套结构的程序,把整数分别用二进制和八进制显示出来在D盘根目录建立一个文件,第一次向文件写入“123456”六个字符,第二次增加“abcd

5、efg”几个字符从键盘上输入文本文件:“d:”的容后,然后新建一个文件“d:”,把前一个文件的所有容复制到后一个文件中从键盘上输入一个十进制数,以十六进制数显示出来。要求子程序用寄存器参数传送方法试编制一个程序,把bx寄存器中的二进制数用十六进制数的形式在屏幕上显示出来代码:1.逆序输出字符串“BASED ADDRESSING”s1 segment stack ;定义栈段s1 dw 100 dup() ;定义栈空间为100top label word ;top指向栈顶s1 endss2 segment ;定义数据段s2s db BASED ADDRESSING,$ ;定义字符串sS2 ends

6、s3 segment ;定义代码段s3 assume cs:s3,ds:s2,ss:s1main proc far mov ax,s1 ;栈初始化 mov ss,ax lea sp,top ;栈初始化 mov ax,s2 ;数据段初始化 mov ds,ax ;数据段初始化 mov si,15l: mov dl,ssi ;dl获取字符串s的最后一个(从零开始的第十五个字符) mov ah,2 ;调用int 21h 2号功能输出dl上的值 int 21h dec si ;寄存器减一,准备获取下一个字符 cmp si,0 ja l mov ah,4ch ;终止 int 21hmain endps3

7、ends end main2.从键盘上输入两个数,分别放到x,y单元,求出它们的和s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db Please input x:,$ ;提示输入h2 db Please input y:,$ ;提示输入h3 db z=x+y:,$ ;提示输出crlf db 0dh,0ah,24h ;定义回车换行x dw y dw s2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 ;初始化 mov ss,ax le

8、a sp,top mov ax,s2 mov ds,ax ;初始化 lea dx,h1 ;int 21h 9号功能输出“提示输入x”的字符串 mov ah,9 int 21h xor bx,bx ;bx清零,即把bx置零InputX: mov ah,1 ;输入一个字符 int 21h cmp al,0dh ;判断时候为“回车”字符 jz exit1 ;如果是回车字符就跳转到exit1 cmp al,30h ;和30h(即字符0的asii值)比较 jl exit1 ;如果输入字符小于0,跳转到exit1 cmp al,39h ;和39h(即字符9的ascii值)比较 jg exit1 ;如果输入

9、字符大于9,跳转到exit1 sub al,30h ;al减去30h,输入字符转化成数字(从这一行开始到后面的add bx,ax为输入字符转化为数字的处理方法) cbw ;al扩充为ax xchg ax,bx mov cx,10 mul cx xchg ax,bx add bx,ax ;sub al,30h开始到这一行为输入字符转化为数字的处理方法 jmp InputX exit1: mov x,bx ;把输入的存于bx的放到x中 lea dx,crlf mov ah,9 int 21h lea dx,h2 mov ah,9 int 21h xor bx,bxInputY: ;和InputX类

10、似,输入y mov ah,1 int 21h cmp al,0dh jz exit2 cmp al,30h jl exit2 cmp al,39h jg exit2 sub al,30h cbw xchg ax,bx mov cx,10 mul cx xchg ax,bx add bx,ax jmp InputYexit2: mov y,bx ;把输入的存于bx的放到y中 mov bx,x add bx,y ;此时bx为两数加和 lea dx,crlf mov ah,9 int 21H lea dx,h3 mov ah,9 int 21h xor si,si ;si清零,用作计数 mov ax

11、,bx ;把和放到ax上 l4: mov cl,10 ;把和连续除以10知道和变为零,余数依次进栈 div cl mov dl,ah mov dh,0 push dx inc si mov ah,0 ;重要,不能漏写 cmp al,0 jnz l4 l5: pop dx ;余数依次出栈 add dl,30h ;余数转换为显示的余数字符 mov ah,2 ;输入余数字符 int 21h dec si cmp si,0 jnz l5 mov ah,4ch int 21Hmain endps3 ends end main3.是编写一段程序,要求在长度为10的数组中,找出大于42h的无符号数的个数并存

12、入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域,并分别显示up、down数组的个数和数组的数字s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db the num of up array and the up array are(prints in decimalism) :,$h2 db the num of down array and the down array are(prints in decimalism) :,$crlf db 0dh,0ah,24harray d

13、b 0,50h,11h,61h,22h,72h,33h,73h,41h,74h,$ ;定义数组arrayup db 10 dup() ;定义up数组 down db 10 dup() ;定义down数组s2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2 mov ds,ax mov si,0 mov di,1 mov bp,1 repeat: cmp arraysi,42h ;把array数组中小于42h的值放到down数组里,大于42h的值放到up数组里

14、面 jb downarray mov dl,arraysi mov upbp,dl inc si cmp si,10 jz exit1 inc bp jmp repeatdownarray: mov dl,arraysi mov downdi,dl inc si cmp si,10 jz exit2 inc di jmp repeatexit1: sub di,1 jmp exitexit2: sub bp,1exit: mov dx,bp ;把分配好的up数组和down数组在其有效数字后面添加$,便于后面的输出结束 mov up0,dl inc bp mov upbp,$ mov dx,di

15、 mov down0,dl inc di mov downdi,$ mov cl,10 mov si,0 lea dx,h1 mov ah,9 int 21hPrintUparray: cmp upsi,$ jz next mov al,upsi call print inc si jmp PrintUparraynext: lea dx,crlf mov ah,9 int 21h lea dx,h2 int 21h xor si,siPrintDownArray: cmp downsi,$ jz atend mov al,downsi call print inc si jmp PrintD

16、ownArrayprint proc near ;print为输出十进制输出某个数的子程序 mov di,0rediv: mov ah,0 div cl mov dl,ah mov dh,0 push dx inc di cmp al,0 jnz redivbreak: pop dx add dl,30h mov ah,2 int 21h dec di cmp di,0 jnz break mov dl, mov ah,2 int 21H retprint endpatend: mov ah,4ch int 21Hmain endps3 ends end main4.键盘输入一段字符串,其中小

17、写字母以大写字母输出,其他字符不变输出s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db Please input a string:,$h2 db The changed string is:,$crlf db 0dh,0ah,24htemp db s2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2 mov ds,ax lea dx,h1 mov ah,9 int 21h

18、 mov si,0l: mov ah,1 int 21h cmp al,0dh jz exit cmp al,a jl putin cmp al,z jg putin sub al,20h ;把小写字符变为大写字符putin: mov tempsi,al ;把字符放到temp数组里 inc si jmp lexit: lea dx,crlf ;输出tmp数组 mov ah,9 int 21h lea dx,h2 mov ah,9 int 21h inc si mov tempsi,$ lea dx,temp mov ah,9 int 21h mov ah,4ch int 21Hmain end

19、ps3 ends end main5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db Please input a lowercase: ,$h2 db The the three chars are: ,$crlf db 0dh,0ah,24hs2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2

20、mov ds,axl: lea dx,h1 mov ah,9 int 21h mov ah,1 int 21h cmp al,a jl l cmp al,z jg l mov cl,al lea dx,crlf mov ah,9 int 21H lea dx,h2 mov ah,9 int 21h dec cl mov dl,cl ;输出前导字符 mov ah,2 int 21h mov dl, mov ah,2 int 21h inc cl mov dl,cl ;输出该字符 mov ah,2 int 21h mov dl, mov ah,2 int 21h inc cl mov dl,cl

21、;输出后导字符 mov ah,2 int 21h mov ah,4ch int 21Hmain endps3 ends end main6.把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db the positive number is: ,$h2 db the negative number is: ,$crlf db 0dh,0ah,24harray dw 50h,-11h,61h,-22h,72h,-33h,

22、73h,-41h,74h,21h,67h,-90h,73h,77h,-1h,-89h,-11h,61h,-22h,20h,$s2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2 mov ds,ax mov bx,0 mov si,0l: mov dx,arraysi cmp dx,0 jl addlow ;有符号数比较用jl add si,2 cmp si,40 jz exit jmp laddlow: inc bx add si,2 cmp si,40

23、jz exit jmp lexit: lea dx,h2 mov ah,9 int 21h mov ax,bx call print lea dx,crlf mov ah,9 int 21h lea dx,h1 mov ah,9 int 21h mov ax,20 sub ax,bx call print jmp atendprint proc near ;打印数字字符的子程序 mov cl,10 mov si,0repeat: div cl mov dl,ah add dl,30h mov dh,0 push dx inc si mov ah,0 cmp al,0 jnz repeatl2:

24、 pop dx mov ah,2 int 21h dec si cmp si,0 jnz l2 retprint endpatend: mov ah,4ch int 21Hmain endps3 ends end main7.打印输出首地址为data的20个字数组中的最小偶数s1 segment stack dw 100h dup()top label words1 endss2 segmenth1 db the min even number is: ,$crlf db 0dh,0ah,24hdata dw 50,-11,61,-22,72,-33,73,-41,74,21,67,-90,7

25、3,77,-1,-89,-11,61,-22,20,$s2 endss3 segment assume cs:s3,ds:s2,ss:s1main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2 mov ds,ax mov bx,65534 ;bx存最小数,初始令最小值置为65534 mov si,0 mov cl,100 mov dl,2l2: mov ax,datasi cmp ax,0 jnl l4 neg ax ;如果是负数,则求补l4: div cl mov al,ah mov ah,0 div dl cmp ah,0 jnz l1

26、 cmp bx,datasi ;比较最小值和数组中的每个数 jl l1 ;如果数组中的数大于最小值跳转到l1 mov bx,datasi ;如果数组中的数小于最小值则将其赋给最小值 l1: add si,2 cmp si,40 jz exit jmp l2 exit: lea dx,h1 mov ah,9 int 21h cmp bx,0 jnl l5 neg bx mov dl,- mov ah,2 int 21hl5: mov ax,bx call print ;调用子程序输出最小值 jmp atendprint proc near mov cl,10 mov si,0repeat: di

27、v cl mov dl,ah add dl,30h mov dh,0 push dx inc si mov ah,0 cmp al,0 jnz repeatl3: pop dx mov ah,2 int 21h dec si cmp si,0 jnz l3 retprint endpatend: mov ah,4ch int 21Hmain endps3 ends end main8.输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”s1 segment stack dw 100h dup()top label wor

28、ds1 endss2 segmenth1 db Please input the first string: ,$h2 db Please input the second string: ,$h3 db MATCH,$h4 db NO MATCH,$crlf db 0dh,0ah,24hstr1 db 50,50 dup($)str2 db 50,50 dup($)s2 endss3 segment assume cs:s3,ds:s2,ss:s3main proc far mov ax,s1 mov ss,ax lea sp,top mov ax,s2 mov ds,ax lea dx,h1 mov ah,9 int 21h lea dx,str1 mov ah,0ah int 21h lea dx,crlf mov ah,9 int 21h lea dx,h2 int 21h lea dx,str2 mov ah,0ah int 21h lea dx,crlf mov ah,9 int 21h mov dl,str1+1 ;str1+1为str1实际的字符个数 cmp dl,str2+1 ;str2+1为str2实际的字符个数 jnz l mov si,2l2: mov dl,str1si

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2