24个汇编实例小程序
汇编小程序_5
![汇编小程序_5](https://img.taocdn.com/s3/m/ac664137011ca300a6c390b1.png)
;========================================================== =====; 文件名称: Asm3-2.asm; 功能描述: 双字节无符号数乘法程序 R2R3*R4R5=[R0](连续4个单元);========================================================== =====O RG 0000HL JMP MAINO RG 0100HMAIN: MOV R0, #23H ;运算结果低位地址M OV A, R0P USH ACCC LR AM OV R7, #4LP1: MOV @R0, A ;运算结果存储单元清零D EC R0D JNZ R7, LP1P OP ACCM OV R0, AM OV A, R3M OV B, R5M UL AB ;计算R3*R5M OV @R0, A ;计算的低8位保存M OV A, BD EC R0M OV @R0, A ;保存运算的高8位M OV A, R2M OV B, R5M UL AB ;计算R2*R5A DD A, @R0 ;此次运算低8位+R3*R5运算的高8位M OV @R0, AD EC R0M OV A, BA DDC A, #00H ;R2*R5的高8位加进位位M OV @R0, AI NC R0M OV A, R3M OV B, R4M UL AB ;计算R3*R4A DD A, @R0M OV @R0, AM OV A, BD EC R0A DDC A, @R0M OV @R0, AD EC R0C LR AA DDC A, #00HM OV A, @R0M OV A, R2M OV B, R4M UL AB ;计算R2*R4I NC R0A DD A, @R0M OV @R0, AM OV A, BD EC R0A DDC A, @R0M OV @R0, AN OPL JMP MAIN ;设置断点查看运算结果;如需进行下一次运算, 可修改R2R3,R4R5的值END。
汇编经典小程序
![汇编经典小程序](https://img.taocdn.com/s3/m/73d1d6952b160b4e777fcf62.png)
汇编经典小程序(总5页) -CAL-FENGHAI.-(YICAI)-Company One1-CAL-本页仅作为文档封面,使用请直接删除实验一:判断一个数X的正,负数,还是零。
(假设是正数,输出+,是负数,输出-,是零,输出This is a zore !)DATA SEGMENTX DB 10CR EQU 0DHLF EQU 0AHW DB 'This is a zore!',CR,LF,'$'ZHENG DB '+',CR,LF,'$'FU DB '-',CR,LF,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XAND AL,ALJZ L1SHL AL,1JC L3JMP L2L1: MOV DX,OFFSET WMOV AH,9INT 21HJMP L4L2: MOV DX,OFFSET ZHENGMOV AH,9INT 21HJMP L4L3: MOV DX,OFFSET FUMOV AH,9INT 21HJMP L4L4: MOV AH,4CHINT 21HCODE ENDSEND START实验二:求十个数中的最小数,并以十进制输出。
(若要求最大的,只要把JC 改为JNC 即可)(仅局限于0---16间的数比较,因为ADD AL,30H只是针对一位的十六进制转换十进制的算法)DATA SEGMENTXDAT DB 0AH,1FH,02H,03H,04H,05H,06H,07H,08H,09HMIN DBCR EQU 0DHLF EQU 0AHW DB ' is min',CR,LF,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,9MOV SI,OFFSET XDATMOV AL,[SI]L2: CMP AL,[SI+1]JC L1MOV AL,[SI+1]L1: INC SILOOP L2ADD AL,30HMOV DL,ALMOV AH,2INT 21HMOV DX,OFFSET WMOV AH,9INT 21HCODE ENDSEND START实验三:设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大到小从新排列的程序。
24个汇编实例小程序文件
![24个汇编实例小程序文件](https://img.taocdn.com/s3/m/f3d62481482fb4daa48d4b2b.png)
24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和试编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。
如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。
试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。
若三个数都不是0,则求出三个数的和并存放在S 单元,若其中有一个数为0,则把其它两个单元也清零。
请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。
(完整版)8086汇编经典例程,推荐文档
![(完整版)8086汇编经典例程,推荐文档](https://img.taocdn.com/s3/m/8300145a524de518974b7d97.png)
sub bl,26 mov al,'a' add al,bl
MOV CX,00H WAIT1: LOOP WAIT1
;延时计数器 ;延时
DW 2 DUP (25*8,25*8,50*8) DW 12 DUP (25*8),100*8
jmp next40
DEC DX
next24: sub bl,52
==========================================
MAIN ENDP
MOV AX,[SI]
5. 编写一个数组排序(从小到大)的小程序,数组在程
序中定义,程序先将原数组显示一遍,然后排序,再
DISP PROC
将排好序的数组显示一遍。
PUSH SI
==========================================
MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100 DW 2 DUP(50,50,25,25),100 DW 3 DUP(50,25,25),100
crlf proc push ax push dx
音演奏歌曲 ========================================== ;这是一个音乐程序,按大写字母“A”,唱乐曲“玛丽
ccc segment assume cs:ccc,ds:qqq
main proc far start: mov ax,qqq
mov ds,ax
next3:
jmp next10 cmp al,'a' jnae next4 cmp al,'z' ja next4 sub al,'a'
小程序案例大全
![小程序案例大全](https://img.taocdn.com/s3/m/e1f9f7b67d1cfad6195f312b3169a4517723e503.png)
小程序案例大全小程序案例一:网易云音乐网易云音乐是一个非常成功的小程序案例。
用户可以在小程序上听歌、搜索歌曲、创建播放列表、关注喜欢的歌手和朋友的动态等。
通过小程序,用户可以方便地随时随地享受音乐。
小程序案例二:美团外卖美团外卖是一个非常知名的小程序案例。
用户可以在小程序上浏览餐厅、点餐、下单、支付,并享受到送餐服务。
美团外卖小程序不仅方便了用户,也给餐厅和骑手提供了更多的订单和收入。
小程序案例三:滴滴出行滴滴出行也是一个非常成功的小程序案例。
用户可以通过小程序预约打车,选择车型、输入目的地,并实时查看司机位置和车辆到达时间。
滴滴出行小程序不仅方便了用户出行,也提高了司机的接单率和收入。
小程序案例四:京东购物京东购物是一个非常受欢迎的小程序案例。
用户可以在小程序上浏览商品、下单购买,并享受到快速的配送服务。
京东购物小程序不仅方便了用户购物,也给卖家带来了更多的销售机会。
小程序案例五:微信支付微信支付是一个非常成功的小程序案例。
用户可以通过小程序进行在线支付,支付水电费、手机费、购买电影票等,并享受到优惠和便利的支付体验。
微信支付小程序不仅方便了用户,也给商家提供了更多的支付渠道和服务。
小程序案例六:腾讯视频腾讯视频是一个非常知名的小程序案例。
用户可以通过小程序观看电影、电视剧、综艺节目等视频内容,还可以实时评论、分享和收藏。
腾讯视频小程序不仅方便了用户观看视频,也为视频内容提供了更多的传播渠道。
小程序案例七:滴滴共享单车滴滴共享单车是一个非常受欢迎的小程序案例。
用户可以通过小程序查找附近的共享单车、扫码开锁、骑行,并实时查看车辆位置和行驶路径。
滴滴共享单车小程序不仅方便了用户出行,也节约了城市交通资源,减轻了交通拥堵的问题。
以上是一些成功的小程序案例,它们都通过小程序给用户带来了很多便利和福利,也为企业带来了更多的机遇和收益。
小程序的发展前景非常广阔,希望有更多的企业和开发者能够利用小程序这一平台,创造出更多有意义和有影响力的案例。
20个简单汇编语言程序 -回复
![20个简单汇编语言程序 -回复](https://img.taocdn.com/s3/m/f70270fbc67da26925c52cc58bd63186bdeb9258.png)
20个简单汇编语言程序-回复简明了解汇编语言,让我们先了解一下汇编语言的基本概念和特点。
汇编语言是一种低级语言,用于与计算机硬件进行沟通和交互,它是由一系列指令组成的。
与高级语言相比,汇编语言更加接近计算机的硬件和操作,因此它的指令更直观,更加底层。
下面我们来看一下20个简单的汇编语言程序:1. [将两个数相加并存储到一个寄存器中]2. [将两个数相加并存储到内存中]3. [将一个寄存器的值存储到内存中]4. [从键盘输入一个数并存储到内存中]5. [从内存中读取一个数并输出到屏幕上]6. [将两个寄存器的值进行逻辑与操作]7. [将两个寄存器的值进行逻辑或操作]8. [将两个寄存器的值进行逻辑非操作]9. [将一个寄存器的值左移一位]10. [将一个寄存器的值右移一位]11. [将一个寄存器的值加一]12. [将一个寄存器的值减一]13. [将一个寄存器的值与一个常数相加]14. [将一个寄存器的值与一个常数进行逻辑与操作]15. [将一个寄存器的值与一个常数进行逻辑或操作]16. [将一个寄存器的值与一个常数进行逻辑非操作]17. [将一个寄存器的值与一个常数左移一位]18. [将一个寄存器的值与一个常数右移一位]19. [将一个寄存器的值与一个常数进行加一]20. [将一个寄存器的值与一个常数进行减一]现在,我们将一步一步地回答这个问题,写一篇1500-2000字的文章,帮助读者更好地理解这些汇编语言程序。
第一步:介绍汇编语言在这一步,我们将介绍汇编语言的基本概念、应用领域和优缺点。
我们将解释汇编语言与高级语言之间的区别,并讨论为什么学习汇编语言对于理解计算机系统和进行底层开发非常重要。
第二步:汇编语言基础知识在这一步,我们将介绍汇编语言的基本知识和概念。
我们将解释什么是指令、寄存器、内存等,并讨论它们在汇编语言中的作用和用法。
第三步:编写简单的汇编语言程序在这一步,我们将逐个介绍这20个简单的汇编语言程序,并提供详细的说明和示例代码。
单片机汇编语言经典一百例
![单片机汇编语言经典一百例](https://img.taocdn.com/s3/m/28202e1290c69ec3d5bb75b0.png)
51单片机实用程序库4.1 流水灯程序介绍:利用P1 口通过一定延时轮流产生低电平输出,以达到发光二极管轮流亮的效果。
实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。
程序实例(LAMP.ASM)ORG 0000HAJMP MAINORG 0030HMAIN:9MOV A,#00HMOV P1,A ;灭所有的灯MOV A,#11111110BMAIN1:MOV P1,A ;开最左边的灯ACALL DELAY ;延时RL A ;将开的灯向右边移AJMP MAIN ;循环DELAY:MOV 30H,#0FFHD1: MOV 31H,#0FFHD2: DJNZ 31H,D2DJNZ 30H,D1RETEND4.2 方波输出程序介绍:P1.0 口输出高电平,延时后再输出低电平,循环输出产生方波。
实际应用中例如:波形发生器。
程序实例(FAN.ASM):ORG 0000HMAIN:;直接利用P1.0口产生高低电平地形成方波////////////// ACALL DELAYSETB P1.0ACALL DELAY10CLR P1.0AJMP MAIN;////////////////////////////////////////////////// DELAY:MOV R1,#0FFHDJNZ R1,$RETEND五、定时器功能实例5.1 定时1秒报警程序介绍:定时器1每隔1秒钟将p1.o的输出状态改变1 次,以达到定时报警的目的。
实际应用例如:定时报警器。
程序实例(DIN1.ASM):ORG 0000HAJMP MAINORG 000BHAJMP DIN0 ;定时器0入口MAIN:TFLA G EQU 34H ;时间秒标志,判是否到50个0.2秒,即50*0.2=1秒MOV TMOD,#00000001B;定时器0工作于方式1MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒11SETB EA ;开总中断SETB ET0 ;开定时器0中断允许SETB TR0 ;开定时0运行SETB P1.0LOOP: AJMP LOOPDIN0:;是否到一秒//////////////////////////////////////// INCC: INC TFLAGMOV A,TFLAGCJNE A,#20,REMOV TFLAG,#00HCPL P1.0;////////////////////////////////////////////////// RE:MOV TL0,#0AFHMOV TH0,#3CH ;设定时时间为0.05秒,定时20次则一秒RETIEND5.2 频率输出公式介绍:f=1/ts51 使用12M晶振,一个周期是1微秒使用定时器1工作于方式0,最大值为65535,以产生200HZ的频率为例:200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电12平或低电平的时间为2500 微秒。
20个简单汇编语言程序
![20个简单汇编语言程序](https://img.taocdn.com/s3/m/d6b21fc0760bf78a6529647d27284b73f2423680.png)
20个简单汇编语言程序汇编语言是一种底层编程语言,其语法简洁、速度快,被广泛应用于嵌入式系统和设备驱动程序的开发。
本文将介绍20个简单的汇编语言程序,帮助读者了解该语言的基本语法和用法,以便更好地进行编程。
1. 程序1:将两个数相加并显示结果。
这个程序演示了如何使用汇编语言进行简单的算术操作。
2. 程序2:计算并显示斐波那契数列。
这个程序展示了如何使用循环和条件语句来求解数学问题。
3. 程序3:判断一个数是否是素数。
这个程序演示了如何使用分支语句来进行逻辑判断。
4. 程序4:将一个字符串逆序输出。
这个程序展示了如何使用栈来实现字符串逆序。
5. 程序5:计算一个字符串的长度。
这个程序展示了如何使用循环和计数器来确定字符串的长度。
6. 程序6:将一个字符串转换为大写。
这个程序演示了如何使用位运算来进行字符转换。
7. 程序7:计算一个数的阶乘。
这个程序展示了如何使用循环和累加运算来求解阶乘。
8. 程序8:判断一个字符串是否是回文。
这个程序演示了如何使用循环和栈来进行字符串回文判断。
9. 程序9:实现快速排序算法。
这个程序展示了如何使用递归和分区操作来进行快速排序。
10. 程序10:实现冒泡排序算法。
这个程序演示了如何使用循环和比较操作来进行冒泡排序。
11. 程序11:计算一个数组的平均值。
这个程序展示了如何使用循环和累加运算来求解平均值。
12. 程序12:查找一个数组中的最大值。
这个程序演示了如何使用循环和比较操作来进行最大值查找。
13. 程序13:判断一个数是否是回文。
这个程序展示了如何使用循环和取余操作来进行数字回文判断。
14. 程序14:实现字符串拼接操作。
这个程序演示了如何使用循环和指针操作来进行字符串拼接。
15. 程序15:实现矩阵乘法运算。
这个程序展示了如何使用循环和累加运算来进行矩阵乘法。
16. 程序16:计算一个数的平方根。
这个程序演示了如何使用二分法和近似计算来求解平方根。
17. 程序17:实现字符串匹配操作。
python编程100个小程序
![python编程100个小程序](https://img.taocdn.com/s3/m/d7752948a7c30c22590102020740be1e650ecce3.png)
python编程100个小程序Python是一种简单易学的编程语言,它具有强大的功能和广泛的应用领域。
在学习Python编程的过程中,编写一些小程序是非常有帮助的。
下面我将为大家介绍100个Python编程的小程序。
1. 打印"Hello, World!":这是Python编程的入门程序,用于验证环境是否配置正确。
2. 计算两个数的和:输入两个数,计算它们的和并输出结果。
3. 判断一个数是否为偶数:输入一个数,判断它是否为偶数并输出结果。
4. 计算一个数的阶乘:输入一个数,计算它的阶乘并输出结果。
5. 判断一个数是否为质数:输入一个数,判断它是否为质数并输出结果。
6. 判断一个字符串是否为回文串:输入一个字符串,判断它是否为回文串并输出结果。
7. 判断一个字符串是否为有效的括号序列:输入一个字符串,判断它是否为有效的括号序列并输出结果。
8. 判断一个字符串是否为有效的IP地址:输入一个字符串,判断它是否为有效的IP地址并输出结果。
9. 判断一个字符串是否为有效的邮箱地址:输入一个字符串,判断它是否为有效的邮箱地址并输出结果。
断它是否为有效的手机号码并输出结果。
11. 判断一个字符串是否为有效的身份证号码:输入一个字符串,判断它是否为有效的身份证号码并输出结果。
12. 判断一个字符串是否为有效的URL地址:输入一个字符串,判断它是否为有效的URL地址并输出结果。
13. 判断一个字符串是否为有效的日期格式:输入一个字符串,判断它是否为有效的日期格式并输出结果。
14. 判断一个字符串是否为有效的密码:输入一个字符串,判断它是否为有效的密码并输出结果。
15. 判断一个字符串是否为有效的用户名:输入一个字符串,判断它是否为有效的用户名并输出结果。
16. 判断一个字符串是否为有效的文件名:输入一个字符串,判断它是否为有效的文件名并输出结果。
17. 判断一个字符串是否为有效的变量名:输入一个字符串,判断它是否为有效的变量名并输出结果。
python小程序200例
![python小程序200例](https://img.taocdn.com/s3/m/bcba602cfe00bed5b9f3f90f76c66137ee064fc6.png)
python小程序200例Python是一种面向对象、解释型的高级程序语言,其开发的应用范围非常广泛。
Python语言的特点主要表现在代码简洁、易读易写、可移植性强等方面。
本文将对Python的小程序100例进行介绍,以帮助初学者更好地掌握语言的基础知识。
1.打印“Hello, World!”print("Hello, World!")2.计算并打印1+2+……+10的值total=0for i in range(1,11):total+=iprint("1+2+……+10的值为:%d" %total)3.输入一个年份,判断是否为闰年year=int(input("请输入一个年份:"))if (year%4==0 and year%100!=0) or year%400==0:print("%d 是闰年" %year)else:print("%d 不是闰年" %year)4.输入两个数字,计算它们的乘积a=int(input("请输入第一个数字:"))b=int(input("请输入第二个数字:")) product=a*bprint("它们的乘积为:%d" %product) 5.从列表中找出最大的数list=[5,6,7,8,9,11,2,21,44]max_number=max(list)print("最大的数为:%d" %max_number) 6.输入一段字符串,判断它是否为回文串str=input("请输入一段字符串:")if str==str[::-1]:print("%s 是回文串" %str)else:print("%s 不是回文串" %str)7.生成指定范围内的随机数import randomrandom_number=random.randint(0,100)print("生成的随机数为:%d" %random_number) 8.计算1到100之间的偶数和total=0for i in range(1,101):if i%2==0:total+=iprint("1到100之间的偶数和为:%d" %total) 9.输入一个数,判断它是否为质数number=int(input("请输入一个正整数:"))if number<=1:print("%d 不是质数" %number)else:for i in range(2,number):if number%i==0:print("%d 不是质数" %number)breakelse:print("%d 是质数" %number)10.输入一个数n,输出1到n之间的所有质数def is_prime(n):if n<=1:return Falsefor i in range(2,n):if n%i==0:return Falsereturn Truen=int(input("输入一个正整数n:"))primes=[]for i in range(2,n+1):if is_prime(i):primes.append(i)print("1到%d之间的所有质数为:" %n,primes) 11.输出n的阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)n=int(input("输入一个正整数n:"))print("%d的阶乘为:%d" %(n,factorial(n)))12.输入一个字符串,统计其中的单词数str=input("输入一段字符串:")words=str.split()print("其中的单词数为:%d" %len(words))13.判断两个字符串是否相等str1=input("请输入第一个字符串:")str2=input("请输入第二个字符串:")if str1==str2:print("两个字符串相等")else:print("两个字符串不相等")14.创建一个字典,存储学生的姓名、年龄、分数等信息student={"name":"张三","age":23,"score":89.5}print("学生姓名:%s,年龄:%d,分数:%.2f" %(student["name"],student["age"],student["score"])) 15.输入一个列表,将其反转后输出list=[1,2,3,4,5]list_reversed=list[::-1]print("经过反转的列表为:",list_reversed)16.生成斐波那契数列def fibonacci(n):if n==1 or n==2:return 1else:return fibonacci(n-1)+fibonacci(n-2)n=int(input("输入生成斐波那契数列数目:"))for i in range(1,n+1):print(fibonacci(i),end=" ")17.将一个列表合并成字符串list=["Python","is","easy"]str=" ".join(list)print(str)18.计算1000到2000之间的闰年for i in range(1000,2001):if (i%4==0 and i%100!=0) or i%400==0: print("%d是闰年" %i)19.输入一个数n,输出前n个斐波那契数列n=int(input("输入正整数n:"))fib=[1,1]for i in range(2,n):fib.append(fib[i-1]+fib[i-2])print(fib)20.输入两个数a,b,计算a的b次方a=float(input("请输入底数:"))b=float(input("请输入指数:"))result=a**bprint("a的b次方为:",result)21.打印出九九乘法表for i in range(1,10):for j in range(1,i+1):print("%d*%d=%d" %(j,i,i*j),end=" ") print()22.将一个列表的数据复制到另一个列表list1=[1,2,3,4,5]list2=list1[:]print("list1:",list1)print("list2:",list2)23.输入一个字符串,逆序输出str=input("请输入一段字符串:")str_reversed=str[::-1]print("输入的字符串逆序输出为:",str_reversed) 24.将一个列表中的所有元素去重list=[1,2,3,1,4,2,5,3]list_new=list(set(list))print("去重后的列表为:",list_new)25.检查两个字符串是否为互为回文str1=input("请输入第一个字符串:")str2=input("请输入第二个字符串:")if str1==str2[::-1]:print("两个字符串互为回文")else:print("两个字符串不互为回文")26.求两个数的最大公约数def gcd(a,b):if b==0:return aelse:return gcd(b,a%b)a=int(input("输入第一个正整数:"))b=int(input("输入第二个正整数:"))print("%d和%d的最大公约数为:%d" %(a,b,gcd(a,b))) 27.求两个数的最小公倍数def lcm(a,b):return a*b//gcd(a,b)a=int(input("输入第一个正整数:"))b=int(input("输入第二个正整数:"))print("%d和%d的最小公倍数为:%d" %(a,b,lcm(a,b)))28.从列表中找出第二大的元素list=[1,2,3,4,5,6,7,8,9]list_new=list.copy()list_new.remove(max(list_new))print("第二大的元素为:",max(list_new))29.从列表中删除重复元素list=[1,2,3,1,4,2,5,3]list_new=[]for i in list:if i not in list_new:list_new.append(i)print("删除重复元素后的列表为:",list_new)30.生成20个随机整数,求其中的最大值和最小值import randomrandom_numbers=[random.randint(1,100) for i in range(20)]max_number=max(random_numbers)min_number=min(random_numbers)print("生成的20个随机整数中的最大值为:%d,最小值为:%d" %(max_number,min_number))31.输入一个字符串,输出其中所有的数字str=input("请输入一段字符: ")numbers=[n for n in str if n.isdigit()]print("该字符串中的数字有:",numbers)32.输入一个数n,输出n的阶乘末尾的0的个数def trailing_zeroes(n):count=0while n>0:n//=5count+=nreturn countn=int(input("请输入一个正整数: "))print("n的阶乘末尾的0的个数为: ",trailing_zeroes(factorial(n))) 33.得到从0到n的所有奇数def odd_numbers(n):return [i for i in range(n+1) if i%2!=0]n=int(input("请输入一个整数:"))print("0到%d之间的所有奇数为:" %n,odd_numbers(n))34.得到从0到n的所有偶数def even_numbers(n):return [i for i in range(n+1) if i%2==0]n=int(input("请输入一个整数:"))print("0到%d之间的所有偶数为:" %n,even_numbers(n))35.输入一个字符串,将其中的元音字母(a、e、i、o、u)替换为字符串“Vowel”str=input("请输入一个字符串: ")vowels="aeiou"new_str=""for i in str:if i.lower() in vowels:new_str+="Vowel"else:new_str+=iprint("替换后的字符串为: ",new_str) 36.计算一个数的平方根import mathnumber=float(input("请输入一个数: ")) if number<0:print("请输入正数")else:sqrt_number=math.sqrt(number)print("%0.2f的平方根为: %0.2f" %(number,sqrt_number)) 37.输入两个数a,b,交换它们的值a=int(input("请输入a的值:"))b=int(input("请输入b的值:"))a,b=b,aprint("交换后a的值为:%d,b的值为:%d" %(a,b)) 38.使用递归计算斐波那契数列def fibonacci(n):if n<=1:return nelse:return fibonacci(n-1)+fibonacci(n-2)n=int(input("请输入n: "))print("第%d个斐波那契数为:%d" %(n,fibonacci(n)))39.计算圆的面积import mathr=float(input("请输入圆的半径: "))area=math.pi*r**2print("圆的面积为:%0.2f" %area)40.将一个列表中的奇数和偶数分别存放到两个新的列表中list=[1,2,3,4,5,6,7,8,9]odd_list=[] #存放奇数even_list=[] #存放偶数for i in list:if i%2==0:even_list.append(i)else:odd_list.append(i)print("原始列表为:",list)print("奇数列表为:",odd_list)print("偶数列表为:",even_list)41.使用匿名函数计算两个数的和add=lambda a,b:a+bprint(add(3,4)) #输出742.对一个列表中的所有元素进行平方处理list=[1,2,3,4,5]square=[i**2 for i in list]print("列表中的元素平方后为:",square) 43.将一个列表中的元素转换为大写字母list=["Python","is","easy"]upper_list=[i.upper() for i in list]print("转换后的列表为:",upper_list)44.将一个列表中小于5的元素过滤掉list=[1,2,3,4,5,6,7,8,9]new_list=[i for i in list if i>=5]print("过滤掉小于5的元素后的列表为:",new_list) 45.判断一个字符串是否为数字def is_number(str):try:float(str)return Trueexcept ValueError:return Falsestr=input("请输入一个字符串: ")if is_number(str):print("%s是数字" %str)else:print("%s不是数字" %str)46.对于一个列表,去除其中重复的元素list=[1,2,3,1,4,2,5,3]list_new=list(set(list))print("去重后的列表为:",list_new)47.将一个列表中的所有元素相加list=[1,2,3,4,5]total=sum(list)print("列表中所有元素的和为:%d" %total) 48.检查两个字符串是否为同构字符串def is_isomorphic(s,t):if len(s)!=len(t):return Falsemapping={}used=set()for i in range(len(s)):if s[i] in mapping:if mapping[s[i]]!=t[i]:return Falseelse:if t[i] in used:return Falseelse:mapping[s[i]]=t[i]used.add(t[i])return Trues=input("请输入第一个字符串:") t=input("请输入第二个字符串:") if is_isomorphic(s,t):print("两个字符串是同构字符串") else:print("两个字符串不是同构字符串")49.找到列表中第一个不重复的元素list=[1,2,3,1,4,2,5,3]for i in list:if list.count(i)==1:print("第一个不重复的元素是:",i)break50.按指定规则将列表中的元素排序list=[("Tom",29),("Jack",30),("Jerry",26),("Marry",21)] def sort_key(item):return item[1]sorted_list=sorted(list,key=sort_key)print("按年龄排序后的列表为:",sorted_list)51.在一个字符串中查找最长的连续字符串str=input("请输入一个字符串:")longest_substring=""substr=""for i in range(len(str)-1):if str[i]<=str[i+1]:substr+=str[i]else:substr+=str[i]if len(substr)>len(longest_substring):longest_substring=substrsubstr=str[i+1]print("最长的连续字符串为:",longest_substring)52.按指定key值排序一个字典dict={"apple":10,"banana":5,"orange":4,"grape":7} sorted_dict={key:value for key,value in sorted(dict.items(), key=lambda x:x[1])}print("按照值排序的字典为:",sorted_dict) 53.计算两个列表的交集list1=[1,2,3,4,5]list2=[2,4,6,8,10]intersect=[i for i in list1 if i in list2]print("交集为:",intersect)54.判断一个字符串是否为回文def is_palindrome(s):s=s.lower()return s==s[::-1]s=input("请输入一个字符串:")if is_palindrome(s):print("是回文字符串")else:print("不是回文字符串")55.将一个列表中的元素倒序排列list=[1,2,3,4,5]reversed_list=list[::-1]print("倒序排列后的列表为:",reversed_list) 56.打印出常用的框架或包的版本import sysprint("Python版本为:",sys.version)import pandas as pdprint("pandas的版本为:",pd.__version__) import numpy as npprint("numpy的版本为:",np.__version__) import matplotlib as mplprint("matplotlib的版本为:", mpl.__version__) 57.将一个字符串翻转str=input("请输入一个字符串: ")reversed_str=str[::-1]print("翻转后的字符串为:",reversed_str) 58.使用递归计算一个数的阶乘def factorial(n):if n==1:return 1else:return n*factorial(n-1)n=int(input("请输入一个正整数:"))print("%d的阶乘为:%d" %(n,factorial(n))) 59.计算列表中所有数的平均值list=[1,2,3,4,5]average=sum(list)/len(list)print("列表中所有数的平均值为:",average)60.将一个字符串中的每个单词的首字母大写str="this is a sample string."title_str=str.title()print("首字母大写后的字符串为:",title_str)61.计算两个数的最大值def max_number(a,b):return a if a>b else ba=int(input("请输入第一个数字:"))b=int(input("请输入第二个数字:"))print("两个数的最大值为:%d" %max_number(a,b)) 62.将一个元组转换为列表tuple=(1,2,3,4)list=list(tuple)print("转换后的列表。
小程序案例
![小程序案例](https://img.taocdn.com/s3/m/d22f99f9be1e650e52ea99e2.png)
(1) [小程序案例][微信小程序]微信小程序知识总结及案例集锦目录主要从以下几个方面给大家总结一下微信小程序相关的知识!1 前言什么是小程序微信小程序在微信开发中的位置微信小程序框架–MINA现代化前端技巧MINA 是不是 HTML 5小程序与传统APP区别小程序为开发者提供了什么微信小程序源码结构10.MINA 组件1微信小程序案例1公众号前言今天把之前收集的微信小程序案例,给大家共享出来,一起学习!学习的别人东西是自己技能增长最快的一种方式.就像之前我们在写程序时,主管或项目经理,经常提醒我们一样,程序写的太乱,不简洁,要多看别人写的好的的程序源码,看多了,模仿多了,自己写代码结构和性能就提高很多了.回归正题,今天着重给大家15个微信小程序案例,需要的可以下载看看!首先在介绍源码之前,还是给大家讲讲微信小程序相关的知识.什么是小程序小程序是微信推出的一种新的公众号的形态不需要下载安装即可在微信中使用的应用小程序、订阅号、服务号、企业号是并行的体系微信小程序在微信开发中的位置微信小程序框架–MINA小程序融合了很多前端开发界的概念,但是并没有采用任何一个框架,包括流行的REACT、VUE,还有CORDOVA。
它不是三者中的任意一个,而是拼凑出一个新的框架。
尽可能简单、高效的方式让开发者可以在微信中开发具有原生 APP 体验的服务现代化前端技巧Virtual DOM开发者写 iOS 和原生的 h5 应用的时候,很多时候是手动地去操作 UI,用户按按钮之后改变页面。
当应用很复杂的时候在改变的过程可能就会产生错误,Virtual DOM每次要去改变一个界面的时候,重新把界面做一次再进行修改,避免出错。
MVVM分离逻辑和数据。
组件化功能、风格模块化,每个风格封装在组件里就不会泄露。
MINA 是不是 HTML 5微信小程序一出来,大家都在猜测是基于什么技术,是 H5 还是原生。
它的框架看起来既像 H5,又像原生。
24个汇编实例小程序
![24个汇编实例小程序](https://img.taocdn.com/s3/m/a7e7bf4bf7ec4afe04a1df2f.png)
24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。
如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。
试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。
若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。
请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。
vba小程序实例
![vba小程序实例](https://img.taocdn.com/s3/m/97d78eef85254b35eefdc8d376eeaeaad0f31649.png)
vba小程序实例VBA小程序实例VBA(Visual Basic for Applications)是一种用于宏编程的编程语言,常用于Microsoft Office软件中。
通过编写VBA小程序,我们可以实现自动化处理数据、操作软件等功能。
本文将通过几个实例来展示VBA小程序的具体应用。
一、实例一:批量处理Excel表格数据假设我们需要对一个包含大量数据的Excel表格进行处理,例如筛选、排序、求和等操作。
使用VBA小程序可以大大提高工作效率。
我们打开Excel软件,按下“Alt + F11”快捷键,打开VBA编辑器。
然后在工程资源管理器中选择“插入”-“模块”,在新建的模块中编写VBA代码。
代码示例:Sub Data_Processing()' 定义变量Dim ws As WorksheetDim rng As Range' 设置工作表和数据范围Set ws = ThisWorkbook.Worksheets("Sheet1")Set rng = ws.Range("A1:E10")' 进行数据处理rng.AutoFilter Field:=1, Criteria1:=">100" ' 筛选大于100的数据' 其他数据处理操作...End Sub上述代码中,我们首先定义了两个变量ws和rng,分别表示工作表和数据范围。
然后通过设置工作表和数据范围,我们可以对指定范围内的数据进行处理。
例如,上述代码中使用了“AutoFilter”方法对第一列数据进行筛选,只显示大于100的数据。
二、实例二:自动发送邮件在日常工作中,我们经常需要发送邮件给固定的收件人。
使用VBA 小程序,我们可以编写一个自动发送邮件的程序,实现批量发送邮件的功能。
我们同样需要打开VBA编辑器。
然后在工程资源管理器中选择“插入”-“模块”,在新建的模块中编写VBA代码。
100个汇编范例
![100个汇编范例](https://img.taocdn.com/s3/m/34b2f46925c52cc58bd6bed5.png)
定点运算和定点数制转换;范例1LSDAA: ADC R16,R16 ;十进制数(在R16中)左移调整子程序ADDAA: IN R6,SREG ;bcd码相加调整子程序,先保存相加后的LDI R17,$66 ;状态the old statusADD R16,R17 ;再将和预加立即数$66IN R17,SREG ;输入相加后新状态(the new status)OR R6,R17 ;新旧状态相或SBRS R6,0 ;相或后进位置位则跳行SUBI R16,$60 ;否则减去$60(十位bcd不满足调整条件)SBRS R6,5 ;半进位置位则跳行SUBI R16,6 ;否则减去$06(个位bcd不满足调整条件)ROR R6 ;向高位字节BCD返还进位位!RET;范例2SUDAA: BRCC SBD1 ;bcd码减法调整子程序,差在R16中BRHC SBD3SUBI R16,$66 ;进位半进位都置位,将差减去立即数$66SEC ;并恢复借位CRET ;ret. with seCSBD1: BRHC SBD2 ;进位半进位都清位,返回SUBI R16,6 ;进位清除而半进位置位,将差减去6SBD2: RET ;ret. with clCSBD3: SUBI R16,$60 ;进位置位而半进位清除,将差减去$60SEC ;并恢复借位CRET ;ret. with seC;范例3RSDAA: SBRC R16,7 ;bcd码(在R16中)右移调整子程序SUBI R16,$30 ;十位BCD最高位为1(代表8),将其变为5(否则跳行)SBRC R16,3SUBI R16,3 ;个位BCD最高位为1(代表8),将其变为5(否则跳行)RET;范例4ADBCD4: MOV R16,R15 ;4字节压缩bcd码相加子程序ADD R16,R11 ;R12,R13,R14,R15内为被加数,R8,R9,R10,R11内为加数RCALL ADDAA ;相加后调整MOV R15,R16 ;并返还调整后结果MOV R16,R14ADC R16,R10RCALL ADDAAMOV R14,R16MOV R16,R13ADC R16,R9RCALL ADDAAMOV R13,R16MOV R16,R12ADC R16,R8RCALL ADDAAMOV R12,R16RET;范例5ADBCD: LDI R16,4 ;多字节压缩bcd码相加子程序MOV R7,R16 ;(r7):字节数CLCADLOP: LD R16,-X ;X-1指向被加数;LD R6,-Y ;Y-1指向加数ADC R16,R6RCALL ADDAA ;相加后调整ST X,R16 ;返还调整后结果DEC R7BRNE ADLOPRET;范例6SUBCD4: MOV R16,R15 ;4字节压缩bcd码减法子程序 SUB R16,R11 ;R12,R13,R14,R15内为被减数,R8,R9,R10,R11内为减数RCALL SUDAA ;相减后调整MOV R15,R16 ;并返还调整后结果MOV R16,R14SBC R16,R10RCALL SUDAAMOV R14,r16MOV R16,R13SBC R16,R9RCALL SUDAAMOV R13,R16MOV R16,R12SBC R16,R8RCALL SUDAAMOV R12,R16RET;范例7SUBCD: LDI R16,4 ;多字节压缩bcd码相减子程序MOV R7,R16 ;(r7):压缩bcd码字节数CLCSUBLP: LD R16,-X ;X-1指向被减数LD R6,-Y ;Y-1指向减数SBC R16,R6RCALL SUDAA ;相减后调整ST X,R16 ;返还调整后结果DEC R7BRNE SUBLPRET;范例8 ;16位被乘数*16位乘数-->32位积MUL16: LDI R16,17 ;(r10r11)*(r14r15)-->r12r13r14r15ClR R12ClR R13 ;积的高位字预清除CLC ;第1次只右移,不相加MLOOP: BRCC MUL1 ;ADD R13,R11 ;乘数右移移出位为1,将被乘数加入部分积ADC R12,R10MUL1: ROR R12ROR R13ROR R14ROR R15 ;部分积连同乘数整体右移1位DEC R16BRNE MLOOP ;17次右移后结束RET;范例9 ;16位整数被乘数*16位小数乘数-->16位整数积,精确到0.5MUL165: RCALL MUL16 ;先得到32位积SBRS R14,7 ;积小数部分最高位为1,将整数部分加1RET ;否则返回LDI R17,255SUB R13,R17SBC R12,R17 ;以减去-1($FFFF)替代加1RET;范例10 ;32位被除数/16位除数-->16位商,精确到1 DIV16: LDI R16,16 ;(r12r13r14r15)/(r10r11)-->r14r15 DLOOP: LSL R15ROL R14ROL R13ROL R12 ;被除数左移1位BRCS DI1SUB R13,R11SBC R12,R10 ;移出位为0,被除数高位字减去除数试商BRCC DI2 ;够减,本位商为1ADD R13,R11ADC R12,R10 ;否则恢复被除数RJMP DI3 ;本位商0DI1: SUB R13,R11SBC R12,R10 ;移出位为1,被除数高位字减去除数DI2: INC R15 ;本位商1DI3: DEC R16BRNE DLOOPRET;范例11 ;32位被除数/16位除数-->16位商,精确到0.5;可能产生溢出!例$7FFFC000/$8000=$FFFF.8->$10000!DIV165: RCALL DIV16 ;(r12r13r14r15)/(r10r11)-->r14r15LSL R13ROL R12 ;余数乘2BRCS D165 ;有进位,转5入SUB R13,R11SBC R12,R10 ;否则,余数乘2减去除数BRCS D164 ;不够减,转4舍D165: CLR R13 ;否则将商增1SECADC R15,R13ADC R14,R13ADC R13,R13 ;若有溢出,溢出位在R13中RETD164: CLR R13RET;范例12 ;32位整数/16位整数->16整数+16位小数->4字节浮点数;(r12r13r14r15)/(r10r11)-->r12r13r14r15 DIV16F: RCALL DIV16 ;先做整数除法MOV R9,r15MOV R8,r14 ;保存整数部分CLR R15CLR R14RCALL DIV16 ;除得小数部分MOV R11,R15MOV R15,R14MOV R13,R8MOV R14,R9 ;整数部分在r13r14,小数部分在r15r11LDI R17,$90 ;预设阶码$90(整数为16位)MOV R12,R17LDI R17,32 ;设32次右移DIV16L: SBRC R13,7RJMP NMLDN ;最高位为1,已完成规格化LSL R11 ;否则继续右移R13,R14,R15,R11ROL R15ROL R14ROL R13DEC R12 ;阶码减1DEC R17BRNE DIV16LCLR R12 ;右移达32次,浮点数为零,置零阶RETNMLDN: SBRS R11,7RJMP DIVRT ;欲舍去部分(R11)最高位为0,转4舍RCALL INC3 ;否则尾数部分增1BRNE DIVRTINC R12 ;尾数增1后变为0,改为0.5,并将阶码增1 DIVRT: LDI R17,$7F ;将尾数最高位清除,表示正数(负数不要清除) AND R13,R17 ;规格化浮点数在R12(阶码)R13R14R15(尾数)中RET;范例13 ;(R16,R12,R13,R14,R15)/(R10,R11)-->R13,R14,R15DIV24: CLR R16 ;32位整数/16位整数->24位整数,要求(R10)不为0;否则;要求(R12)<(R11) DIV40: LDI 17,24 ;40位整数/16位整数->24位整数要求(R16,R12)LXP: LSL R15 ; <(R10,R11)ROL R14ROL R13ROL R12ROL R16BRCC LXP1SUB R12,R11 ;右移后C=1 够减SBC R16,R10 ;被除数减去除数RJMP DIV0 ;本位商为1LXP1: SUB R12,R11 ;C=0SBC R16,R10 ;被除数减去除数试商BRCC DIV0 ;C=0 够减,本位商1ADD R12,R11ADC R16,R10 ;否则恢复被除数,本位商0RJMP DIV1DIV0: INC R15 ;记本位商1DIV1: DEC R17BRNE LXPLSL R12ROL R16BRCS GINC ;C=1,5入SUB R12,R11SBC R16,R10BRCS RET3 ;不够减,舍掉GINC: RCALL INC3 ;将商增1RET3: RET;范例14 ;定点整数(最大$FFFFFFFF)开平方子程序INTSQR: LDI R16,17 ;SQR(R12,R13,R14,R15)-->(r15r8r9)CLR R8 ;R8,R9存储平方根CLR R9 ;r10,r11,r12,r13,r14,r15CLR R10 ; r8, r9(根) r16 (counter) CLR R11 ;r10,r11:被开平方数扩展字节LDI R17,$40SQR0: SUB R12,R17SBC R11,R9SBC R10,R8BRCS SQR1SEC ;试根够减,本位根1RJMP SQR2SQR1: ADD R12,R17ADC R11,R9ADC R10,R8CLC ;否则恢复被开平方数,本位根0SQR2: DEC R16BRNE SQR3 ;when the No.17bit of root be getting SQR20: ADC R9,R15 ;R15 HAVE BEEN CLEARED!ADC R8,R15ADC R15,R15 ;将开出之根4舍5入,使根最大可达65536(=$10000)!RET ;for example:sqr.($ffff0001)≈$10000 SQR3: ROL R9ROL R8 ;记本位根LSL R15ROL R14ROL R13ROL R12ROL R11ROL R10 ;被开平方数连同其扩展字节左移一位LSL R15ROL R14ROL R13ROL R12ROL R11ROL R10 ;被开平方数连同其扩展字节再次左移一位/左移2位开出1位根BRCS SQR20 ;被开平方数左移2位后,若进位置位,则仅表明第17位根;已被提前开出且该位根=1,将平方根增1,开平方结束。
20个简单汇编语言程序 -回复
![20个简单汇编语言程序 -回复](https://img.taocdn.com/s3/m/fe1c7e9527fff705cc1755270722192e453658d3.png)
20个简单汇编语言程序-回复在编写这篇文章之前,让我们先了解一下什么是汇编语言。
汇编语言是一种底层的计算机语言,与机器语言非常接近。
它使用特定的助记符和指令来编写计算机程序。
汇编语言程序由一系列指令组成,这些指令告诉计算机执行特定的操作。
现在,让我们来看看以下的20个简单汇编语言程序,并逐个回答它们的功能和用途。
1. [求两个数的和]这个简单的汇编语言程序用于计算并打印两个输入数字的和。
它将两个输入的数字存储在寄存器中,并使用加法指令将它们相加。
2. [判断一个数是奇数还是偶数]这个汇编语言程序通过使用位操作和逻辑运算来判断一个输入数字是奇数还是偶数,并将结果打印出来。
它使用与运算指令来检查数字的最低位。
3. [计算一个数的阶乘]这个汇编语言程序用于计算并打印一个输入数字的阶乘。
它使用循环来连续乘以该数字的前一个数字,直到计算到1。
4. [求两个数的最大公约数]这个简单的汇编语言程序用于计算两个输入数字的最大公约数,并将结果打印出来。
它使用辗转相除法来找到最大公约数。
5. [判断一个数是素数还是合数]这个汇编语言程序通过使用循环和条件判断来判断一个输入数字是素数还是合数,并将结果打印出来。
它将该数字除以从2到它的平方根的所有数字。
6. [计算一个数的平方根]这个简单的汇编语言程序用于计算并打印一个输入数字的平方根。
它使用二分法逼近来找到平方根。
7. [将一个字符串反转]这个汇编语言程序用于将输入的字符串反转,并将结果打印出来。
它使用循环和临时寄存器来交换字符串中的字符。
8. [从一个字符串中查找子串]这个汇编语言程序用于在输入的字符串中查找子串,并将结果打印出来。
它使用循环和条件判断来逐个比较字符串的字符。
9. [将一个字符串转换为大写]这个简单的汇编语言程序用于将输入的字符串转换为大写,并将结果打印出来。
它使用循环和位操作来进行字符的转换。
10. [将一个字符串转换为小写]这个汇编语言程序用于将输入的字符串转换为小写,并将结果打印出来。
几个简单的汇编程序
![几个简单的汇编程序](https://img.taocdn.com/s3/m/3091a54377c66137ee06eff9aef8941ea76e4bff.png)
汇编语言在特定领域的应用:尽管高级语言在通用编程领域具有优势,但在某些特定领域,如嵌入式系统、操作 系统内核开发、性能优化等,汇编语言仍然具有不可替代的作用。未来,随着物联网、边缘计算等领域的快速发 展,汇编语言的应用前景将更加广阔。
汇编语言与高级语言比较
编程效率
高级语言编程效率高,代码易于 理解和维护;而汇编语言编程效
率低,代码难以理解和维护。
执行效率
汇编语言执行效率高,可以直接控 制硬件;而高级语言执行效率相对 较低,需要通过编译器或解释器转 换为机器语言。
可移植性
高级语言可移植性好,可以在不同 平台上运行;而汇编语言可移植性 差,只能在特定平台上运行。
; 如果相同,
inc rcx
; 如果不同,继
续遍历下一个字符
汇编代码实现
• jmp .loop ; 跳转到循环开始处
汇编代码实现
.found
mov rax, rcx
; 将找到的位置(计数器值)存储到rax寄存器中
jmp .end
; 跳转到函数结束处
汇编代码实现
.notFound
mov rax, -1 ; 将未找到的特殊值(-1) 存储到rax寄存器中
汇编代码实现
; 存储查找结果到result变量
mov [result], rax
; 退出程序
汇编代码实现
mov eax, 60
xor edi, edi
汇编代码实现
syscall
; 查找函数,接受两个参数:字符 串和要查找的字符的地址
常见汇编小程序大全
![常见汇编小程序大全](https://img.taocdn.com/s3/m/3d0600442e3f5727a5e9623d.png)
;1加到任意的数STACK SEGMENT STACKDB 100H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:MOV CL,10MOV AH,01HMOV AL,0PUSH AXPRINT:MOV AH,01HINT 21HCMP AL,0DHJE SSUB AL,30HMOV DL,ALPOP AXMUL CLADD AL,DLPUSH AXJMP PRINTS:MOV DL,0AHMOV AH,02HINT 21HPOP AX ;输出回车换行MOV CL,AL ;加法器,并输出结果AND CX,00FFHMOV AX,0MOV BX,1SSS: ADD AX,BXINC BXLOOP SSSMOV CX,0XXX: MOV DX,0MOV BX,10DIV BXINC CXPUSH DXCMP AX,0JA XXXMOV AH,02HSSSS:POP DXADD DL,30HINT 21HLOOP SSSSMOV AH,4CHINT 21HCODE ENDSEND START;2 p进制bx(入口)转换STACK SEGMENT STACKDB 100H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART:MOV CL,10MOV AH,01HMOV AL,0PUSH AXPRINT:MOV AH,01HINT 21HCMP AL,0DHJE SSUB AL,30HMOV DL,ALPOP AXMUL CLADD AL,DLPUSH AXJMP PRINTS:MOV DL,0AHMOV AH,02HINT 21HMOV CX,0POP AXXXX: MOV DX,0MOV BX,7 ;进制的入口参数DIV BXINC CXPUSH DXCMP AX,0JA XXXMOV AH,02HSSSS:POP DXADD DL,30HINT 21HLOOP SSSSMOV AH,4CHINT 21HCODE ENDSEND STARTXXX: ADD AL,37HJMP XXXXQQQ: ADD AL,30HXXXX: MOV DL,ALMOV AH,02HINT 21H;3 x的n次方DATA SEGMENTX DB 80H DUP(0)Y DB 80H DUP(0)DATA ENDSSTACK SEGMENTDW 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA ;该程序实现了首位是0则吧输出的功能MOV DS,AX ;局限是两个数必须是个位数MOV AH,01H ;并且输入时两个数之间没有空格检测INT 21HMOV X,AHSUB AL,30HMOV Y,ALMOV AH,01HINT 21HSUB AL,30HMOV BL,ALMOV AL,YMOV CL,YXXX: MUL CLINC XCMP BL,XJNE XXXPUSH AXMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HPOP AXMOV CX,0XX: MOV DX,0MOV BX,10DIV BXINC CXPUSH DXCMP AX,0JA XXMOV AH,02H SSSS:POP DXADD DL,30HINT 21HLOOP SSSSMOV AH,4CHINT 21HCODE ENDSEND START;4 y与x的选择输出STACK SEGMENT STACK DW 20H DUP(0)STACK ENDSCODE SEGMENT ASSUME CS:CODE,SS:STACK START:MOV AH,01HINT 21HSUB AL,30HMOV AH,0MOV BL,ALCMP AL,3JE S1CMP AL,4JE S2CMP AL,5JE S3CMP AL,6JE S4CMP AL,3JNA S5CMP AL,7JNB S5S1:MUL BL ADD AL,BL JMP SSSS2:MUL BLSUB AL,BLSUB AL,BLJMP SSSS3:MUL BLJMP SSSS4:MUL BXMOV CL,2DIV CLJMP SSSS5:MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHINT 21HMOV DL,65HINT 21HMOV DL,72HINT 21HMOV DL,72HINT 21HMOV DL,6FHINT 21HMOV DL,72HINT 21HJMP XX SSS:MOV CL,16DIV CLPUSH AXPUSH AXMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HPOP AXMOV DL,ALADD DL,30HMOV AH,02HINT 21HPOP AX ;也可以movdl,ah效果一样MOV CL,8SHR AX,CLCMP AL,9JA XXXCMP AL,9JNA QQQXXX: ADD AL,37HJMP XXXXQQQ: ADD AL,30HXXXX: MOV DL,ALMOV AH,02HINT 21HXX: MOV AH,4CHINT 21HCODE ENDSEND START;5 跟踪数据段DATA SEGMENTX DB 80H DUP(0)DATA ENDSSTACK SEGMENTDW 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV SI,OFFSET XWW: MOV AH,01HINT 21HCMP AL,3DHJE ZZCMP AL,3AHJB YYSUB AL,37HMOV [SI],ALINC SIJMP WWYY: SUB AL,30HMOV [SI],ALINC SIJMP WWZZ: DEC SI ;这是要注意的MOV AH,[SI]DEC SIMOV AH,[SI]MOV AH,4CHINT 21HCODE ENDSEND START;6九九乘法表STACK SEGMENTDW 30H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODESTART:MOV CX,101HJMP WWQQ: INC CLMOV DL,20H ;输出空格MOV AH,02HINT 21HWW: MOV DL,CHADD DL,30HMOV AH,02HINT 21HMOV DL,2AHINT 21HMOV DL,CLADD DL,30HINT 21HMOV DL,3DHINT 21HMOV AL,CHMOV BL,CLMOV AH,0MOV BL,0AHDIV BLPUSH AXMOV DL,ALADD DL,30HCMP DL,30HJE KKKMOV AH,02HINT 21HJMP RRKKK: MOV DL,20H ;乘之后结果首位是0 MOV AH,02HINT 21HRR: POP AXMOV DL,AHADD DL,30HMOV AH,02HINT 21HCMP CH,CLJA QQMOV AH,02H ;回车换行MOV DL,0DHINT 21HMOV DL,0AHINT 21HCMP CH,9JE EEINC CHMOV CL,1JMP WWEE: CODE ENDSEND START;7 逆向输出DATA SEGMENTX DB 80H DUP(0)DATA ENDSSTACK SEGMENTDW 80H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATAMOV BX,OFFSET X XXX: MOV AH,01HINT 21HCMP AL,0DHJE QQQMOV [BX],ALINC BXJMP XXXQQQ: MOV AH,02HMOV DL,0AHINT 21HQQ: DEC BXMOV DL,[BX]MOV AH,02HINT 21HMOV CX,BXINC CXCMP CX,OFFSET XJNE QQMOV AX,4C00HINT 21HCODE ENDSEND START;8 去掉空格并反向输出DATA SEGMENTX DB 80H DUP(0)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV BX,OFFSET X XXX: MOV AH,01HINT 21HCMP AL,0DHJE QQQMOV [BX],ALINC BXJMP XXXQQQ: MOV AH,02HMOV DL,0AHINT 21HQQ: DEC BXJE QQMOV DL,[BX]MOV AH,02HINT 21HMOV CX,BXCMP CX,OFFSET XJNE QQMOV AX,4C00HINT 21HCODE ENDSEND START;9四位二进制数转换为压缩的bcd码DATA SEGMENTX DB 80H DUP(0)DATA ENDSSTACK SEGMENTDW 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV CX,4MOV BX,OFFSET XXX: MOV AH,01HINT 21HCMP AL,3AHJB XXXSUB AL,37HJMP QQXXX: SUB AL,30HQQ: MOV [BX],ALINC BXLOOP XXMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HMOV CX,4MOV BX,OFFSET XQQQ: MOV AL,[BX]MOV DH,8XOR AH,AHDIV DHPUSH AXADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP AXMOV AL,AHMOV DH,4XOR AH,AHDIV DHPUSH AXADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP AXMOV AL,AHMOV DH,2XOR AH,AHDIV DHPUSH AXADD AL,30HMOV DL,ALMOV AH,02HINT 21HPOP AXADD AH,30HMOV DL,AHMOV AH,02HINT 21HINC BXLOOP QQQMOV AH,4CHINT 21HCODE ENDSEND START ;10 星星输出DATA SEGMENTX DB 80H DUP(0) DATA ENDS STACK SEGMENT DW 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXMOV AH,01HINT 21HINC ALSUB AL,30HMOV BL,ALMOV BH,ALMOV AH,0MOV CX,AXMOV DH,1PUSH AXMOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHINT 21HDEC CLMOV X,CLXX: MOV DL,20H ;定义两个段xx和qq是两种运算,不过在第一层循环里MOV AH,02HINT 21HLOOP XXQQ: MOV DL,2AHINT 21HMOV CL,XJMP BBAA: MOV DL,2AHINT 21HBB: INC CLCMP BL,CLJE SSSSINC CLMOV DL,20HMOV AH,02HINT 21HJMP AASSSS: INC BLMOV AH,02HMOV DL,0DHINT 21HMOV DL,0AHINT 21HINC DHDEC XMOV CL,XCMP BH,DHJE QQQCMP BH,DHJNE XXQQQ: MOV AX,4C00HINT 21HCODE ENDSEND START;11 字符串的比较DATA SEGMENTX DB 50H DUP(0)Y DB 50H DUP(0)Z DB 'CHAR1>CHAR2'A DB 'CHAR1<CHAR2'B DB 'CHAR1=CHAR2' DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV CX,0MOV BX,OFFSET X XXX: MOV AH,01HINT 21HCMP AL,0DHJE QQQMOV [BX],ALINC BXINC CHJMP XXXQQQ: MOV AH,02HMOV DL,0AHINT 21HMOV SI,OFFSET Y QQ: MOV AH,01HINT 21HCMP AL,0DHJE WWWMOV [SI],ALINC SIINC CLJMP QQWWW: MOV AH,02HMOV DL,0AHINT 21HCMP CH,CLJA AACMP CH,CLJB BBMOV BX,OFFSET XMOV SI,OFFSET YMOV DL,CHSSS: CMP DL,0 ;两个数的长度要是一样,则每一项进行比较,从高位首项开始JE CCDEC DLMOV CH,[BX]MOV CL,[SI]CMP CH,CLJA AACMP CH,CLJB BBINC BXINC SIJMP SSSAA: LEA DI,ZA1: CMP DH,11JE ZZMOV DL,[DI]MOV AH,2INT 21HINC DHINC DIJMP A1BB: LEA DI,AB1: CMP DH,11JE ZZMOV DL,[DI]MOV AH,2INT 21HINC DHINC DIJMP B1CC: LEA DI,BC1: CMP DH,11JE ZZMOV DL,[DI]MOV AH,2INT 21HINC DHINC DIJMP C1ZZ: MOV AH,4CHINT 21HCODE ENDSEND START;12两个循环实现向量相乘DATA SEGMENTVA DB 1,3,5,7,9VB DB 2,4,6,8,10COUNT EQU $-VBRESULT DB COUNT*COUNT DUP(0)DATA ENDSSTACK SEGMENT PARA STACKDW 40H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXLEA SI,VALEA DI,VBLEA BP,RESULTPUSH BPMOV CX,COUNTLOP1: PUSH CXPUSH DIMOV CX,COUNTMOV AL,[SI]MOV AH,0LOP2: PUSH AXMUL BYTE PTR [DI]MOV [BP],AXPOP AXADD BP,1INC DILOOP LOP2POP DIPOP CXINC SIMOV CX,25POP BPLOP3: MOV AX,[BP]MOV BL,0AHMOV AH,0DIV BLPUSH AXMOV DL,ALADD DL,30HCMP DL,30HJE KKKMOV AH,02HINT 21HJMP RRKKK: MOV DL,20H ;乘之后结果首位是0MOV AH,02HINT 21HRR: POP AXMOV DL,AHADD DL,30HMOV AH,02HINT 21HMOV DL,20HINT 21HADD BP,1LOOP LOP3MOV AH,4CHINT 21HCODE ENDSEND START;13求阶乘DATA SEGMENTRES DW ?DATA ENDSSTACK1 SEGMENT PARA STACKDW 20H DUP(0) ;8的阶乘就不行了,寄存器的位数有限STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AXCALL STDINMOV AH,0MOV AH,02H ; 回车换行MOV DL,0DHINT 21HMOV DL,0AHINT 21HPOP AXMOV BX,1CALL FACTMOV RES,BXMOV AX,BX ;想让它输出MOV CX,0XXX: MOV DX,0MOV BX,10DIV BXINC CXPUSH DXCMP AX,0JA XXXMOV AH,02HSSS:POP DXADD DL,30HINT 21HLOOP SSSMOV AH,4CHINT 21HSTDIN PROCMOV AH,1INT 21HCMP AL,30HJL STDINCMP AL,37HJG STDINAND AL,0FHRETSTDIN ENDPFACT PROCCMP AX,0JG NEXT1MOV BX,1RETNEXT1:CMP AX,1JG NEXT2RETNEXT2:PUSH AXMUL BXMOV BX,AXPOP AXDEC AXCMP AL,1JA NEXT2RETFACT ENDPCODE ENDSEND START;14 十进制多字节加法器DATA SEGMENTX DB 20H DUP(0)Y DB 20H DUP(0)Z DB 20H DUP(0)DATA ENDSSTACK SEGMENTDW 20H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV CX,0MOV BP,OFFSET XMOV SI,OFFSET YMOV DI,OFFSET ZXX: MOV AH,01HINT 21HCMP AL,2BH ;是加号就跳JE WWSUB AL,30HMOV [BP],ALINC BPINC CHJMP XXWW: MOV AH,01HINT 21HCMP AL,3DH ;是等于号就跳JE AASUB AL,30HMOV [SI],ALINC SIINC CLJMP WWAA: CMP CL,CHJB DDMOV DL,CLMOV DH,CLJMP MM ;取较长的数的长度用来比较DD: MOV DL,CHMOV DH,CHMM: CMP DL,0JE KKDEC SIDEC BPMOV AL,[BP]MOV AH,[SI]ADD AL,AHMOV [DI],ALDEC DLINC DIJMP MMKK: PUSH DXMOV DI,OFFSET Z ;DI重新指向最低位,既段首RR: CMP DH,0 ;核心,与16的比较,小于16的不管,全部比较一遍。
20个简单汇编语言程序
![20个简单汇编语言程序](https://img.taocdn.com/s3/m/4bc4cd357dd184254b35eefdc8d376eeafaa175f.png)
20个简单汇编语言程序(实用版)目录1.汇编语言简介2.20 个简单汇编程序列表3.程序 1:Hello World4.程序 2:计算两个数之和5.程序 3:计算两个数之差6.程序 4:计算两个数之积7.程序 5:计算两个数相除8.程序 6:从键盘输入数据9.程序 7:输出九九乘法表10.程序 8:判断一个数是否为素数11.程序 9:判断一个数是否为回文字符串12.程序 10:模拟交通信号灯13.程序 11:计算斐波那契数列14.程序 12:模拟弹球游戏15.程序 13:实现简易计算器功能16.程序 14:实现日历功能17.程序 15:实现简单文本编辑器功能18.程序 16:实现文件压缩与解压缩功能19.程序 17:实现密码加密与解密功能20.程序 18:实现简单聊天机器人功能21.程序 19:实现贪吃蛇游戏功能22.程序 20:实现俄罗斯方块游戏功能正文汇编语言是一种低级编程语言,它与计算机硬件的操作紧密相关。
汇编语言直接使用计算机处理器的指令集,因此可以实现对硬件的精确控制。
这种语言的优势在于它能够产生高效的代码,特别是在处理系统调用和硬件操作时。
然而,它的缺点是编写难度较大,需要对计算机硬件和汇编指令有深入的了解。
下面,我们将介绍 20 个简单的汇编程序,这些程序涵盖了日常生活和计算机科学中的一些基本操作。
1.程序 1:Hello World这个程序非常简单,它将在屏幕上显示“Hello World”。
2.程序 2:计算两个数之和这个程序将接收两个数字作为输入,并在屏幕上显示它们的和。
3.程序 3:计算两个数之差这个程序将接收两个数字作为输入,并在屏幕上显示它们的差。
4.程序 4:计算两个数之积这个程序将接收两个数字作为输入,并在屏幕上显示它们的积。
5.程序 5:计算两个数相除这个程序将接收两个数字作为输入,并在屏幕上显示它们的商。
6.程序 6:从键盘输入数据这个程序将接收从键盘输入的数据,并在屏幕上显示。
汇编语言_24个汇编实例小程序
![汇编语言_24个汇编实例小程序](https://img.taocdn.com/s3/m/67a000880c22590102029de9.png)
24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。
如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。
试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。
若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。
请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。
汇编语言小程序例子
![汇编语言小程序例子](https://img.taocdn.com/s3/m/4f98a7fcaff8941ea76e58fafab069dc502247f2.png)
1.编写统计AX中1、0个数的源程序.1的个数存入CH,0的个数存入CL。
CODE SEGMENTASSUME CS:CODESTART: MOV CX, 0MOV DX,17AA1: SUB DX, 1JZ AA3SHL AX, 1JNC AA2INC CHJMP AA1AA2: INC CLJMP AA1AA3: MOV AH,4CHINT 21HCODE ENDSEND START2.编写比较两个字符串STRING1和STRING2所含字符是否完全相同的源程序,若相同则显示“MATCH”,若不相同则显示“NO MATCH”.程序:DATA SEGMENTR1 DB 'MATCH’,0AH,0DHR2 DB 'NO MATCH’,0AH,0DHSTRING1 DB ’XXXXX'N1 EQU $-STRING1STRING2 DB 'YYYYY'N2 EQU $-STRING2DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START: MOV AX,DATAMOV DS,AXMOV AX,N1CMP AX,N2JNZ AA1ADD AX,1LEA SI,STRING1LEA DI,STRING2AA2: MOV BL,[SI]MOV BH,[DI]INC SIINC DISUB AX,1JZ AA3CMP BL,BHJZ AA2JMP AA1AA3: LEA BX,R1MOV CX,7AA4: MOV DL,[BX]INC BXMOV AH,2INT 21HLOOP AA4JMP EAA1: LEA BX,R2MOV CX,10AA5: MOV DL,[BX]INC BXMOV AH,2INT 21HLOOP AA5E: MOV AH,4CHINT 21HCODE ENDSEND START3.从键盘读入一个四位的十六进制数,CRT显示等值的二进制数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和试编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。
如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。
试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。
若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。
请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入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盘根目录建立一个文件abc.txt,第一次向文件写入“123456”六个字符,第二次增加“abcdefg”几个字符从键盘上输入文本文件:“d:\temp.txt”的内容后,然后新建一个文件“d:\temp2.txt”,把前一个文件的所有内容复制到后一个文件中从键盘上输入一个十进制数,以十六进制数显示出来。
要求子程序用寄存器参数传送方法试编制一个程序,把bx寄存器中的二进制数用十六进制数的形式在屏幕上显示出来代码:1.逆序输出字符串“BASED ADDRESSING”s1 segment stack ;定义栈段s1dw 100 dup(?) ;定义栈空间为100top label word ;top指向栈顶s1 endss2 segment ;定义数据段s2s db 'BASED ADDRESSING','$' ;定义字符串sS2 endss3 segment ;定义代码段s3assume cs:s3,ds:s2,ss:s1main proc farmov ax,s1 ;栈初始化——mov ss,axlea sp,top ;——栈初始化mov ax,s2 ;数据段初始化——mov ds,ax ;——数据段初始化mov si,15l: mov dl,s[si] ;dl获取字符串s的最后一个(从零开始的第十五个字符)mov ah,2 ;调用int 21h 2号功能输出dl上的值int 21hdec si ;寄存器减一,准备获取下一个字符cmp si,0ja lmov ah,4ch ;终止int 21hmain endps3 endsend main2.从键盘上输入两个数,分别放到x,y单元,求出它们的和s1 segment stackdw 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 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1 ;初始化——mov ss,axlea sp,topmov ax,s2mov ds,ax ;——初始化lea dx,h1 ;int 21h 9号功能输出“提示输入x”的字符串mov ah,9int 21hxor bx,bx ;bx清零,即把bx置零InputX:mov ah,1 ;输入一个字符int 21hcmp al,0dh ;判断时候为“回车”字符jz exit1 ;如果是回车字符就跳转到exit1cmp al,30h ;和30h(即字符0的asii值)比较jl exit1 ;如果输入字符小于'0',跳转到exit1cmp al,39h ;和39h(即字符9的ascii值)比较jg exit1 ;如果输入字符大于'9',跳转到exit1sub al,30h ;al减去30h,输入字符转化成数字(从这一行开始到后面的add bx,ax为输入字符转化为数字的处理方法)cbw ;al扩充为axxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,ax ;sub al,30h开始到这一行为输入字符转化为数字的处理方法jmp InputXexit1: mov x,bx ;把输入的存于bx的放到x中lea dx,crlfmov ah,9int 21hlea dx,h2mov ah,9int 21hxor bx,bxInputY: ;和InputX类似,输入ymov ah,1int 21hcmp al,0dhjz exit2cmp al,30hjl exit2cmp al,39hjg exit2sub al,30hcbwxchg ax,bxmov cx,10mul cxxchg ax,bxadd bx,axjmp InputYexit2: mov y,bx ;把输入的存于bx的放到y中mov bx,xadd bx,y ;此时bx为两数加和lea dx,crlfmov ah,9int 21Hlea dx,h3mov ah,9int 21hxor si,si ;si清零,用作计数mov ax,bx ;把和放到ax上l4: mov cl,10 ;把和连续除以10知道和变为零,余数依次进栈div clmov dl,ahmov dh,0push dxinc simov ah,0 ;重要,不能漏写cmp al,0jnz l4l5: pop dx ;余数依次出栈add dl,30h ;余数转换为显示的余数字符mov ah,2 ;输入余数字符int 21hdec sicmp si,0jnz l5mov ah,4chint 21Hmain endps3 endsend main3.是编写一段程序,要求在长度为10的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域,并分别显示up、down数组的个数和数组内的数字s1 segment stackdw 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 db 0,50h,11h,61h,22h,72h,33h,73h,41h,74h,'$' ;定义数组arrayup db 10 dup(?) ;定义up数组down db 10 dup(?) ;定义down数组s2 endss3 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axmov si,0mov di,1mov bp,1repeat: cmp array[si],42h ;把array数组中小于42h的值放到down数组里,大于42h的值放到up数组里面jb downarraymov dl,array[si]mov up[bp],dlinc sicmp si,10jz exit1inc bpjmp repeatdownarray:mov dl,array[si]mov down[di],dlinc sicmp si,10jz exit2inc dijmp repeatexit1: sub di,1jmp exitexit2: sub bp,1exit: mov dx,bp ;把分配好的up数组和down数组在其有效数字后面添加'$',便于后面的输出结束mov up[0],dlinc bpmov up[bp],'$'mov dx,dimov down[0],dlinc dimov down[di],'$'mov cl,10mov si,0lea dx,h1mov ah,9int 21hPrintUparray:cmp up[si],'$'jz nextmov al,up[si]call printinc sijmp PrintUparraynext:lea dx,crlfmov ah,9int 21hlea dx,h2int 21hxor si,siPrintDownArray:cmp down[si],'$'jz atendmov al,down[si]call printinc sijmp PrintDownArrayprint proc near ;print为输出十进制输出某个数的子程序mov di,0rediv: mov ah,0div clmov dl,ahmov dh,0push dxinc dicmp al,0jnz redivbreak: pop dxadd dl,30hmov ah,2int 21hdec dicmp di,0jnz breakmov dl,' 'mov ah,2int 21Hretprint endpatend: mov ah,4chint 21Hmain endps3 endsend main4.键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出s1 segment stackdw 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 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axlea dx,h1mov ah,9int 21hmov si,0l: mov ah,1int 21hcmp al,0dhjz exitcmp al,'a'jl putincmp al,'z'jg putinsub al,20h ;把小写字符变为大写字符putin: mov temp[si],al ;把字符放到temp数组里inc sijmp lexit: lea dx,crlf ;输出tmp数组mov ah,9int 21hlea dx,h2mov ah,9int 21hinc simov temp[si],'$'lea dx,tempmov ah,9int 21hmov ah,4chint 21Hmain endps3 endsend main5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符s1 segment stackdw 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 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axl: lea dx,h1mov ah,9int 21hmov ah,1int 21hcmp al,'a'jl lcmp al,'z'jg lmov cl,allea dx,crlfmov ah,9int 21Hlea dx,h2mov ah,9int 21hdec clmov dl,cl ;输出前导字符mov ah,2int 21hmov dl,' 'mov ah,2int 21hinc clmov dl,cl ;输出该字符mov ah,2int 21hmov dl,' 'mov ah,2int 21hinc clmov dl,cl ;输出后导字符mov ah,2int 21hmov ah,4chint 21Hmain endps3 endsend main6.把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来s1 segment stackdw 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,73h,-41h,74h,21h,67h,-90h,73h,77h,-1h,-89h,-11h,61h,-22h,2 0h,'$'s2 endss3 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axmov bx,0mov si,0l: mov dx,array[si]cmp dx,0jl addlow ;有符号数比较用jladd si,2cmp si,40jz exitjmp laddlow: inc bxadd si,2cmp si,40jz exitjmp lexit: lea dx,h2int 21hmov ax,bxcall printlea dx,crlfmov ah,9int 21hlea dx,h1mov ah,9int 21hmov ax,20sub ax,bxcall printjmp atendprint proc near ;打印数字字符的子程序mov cl,10mov si,0repeat: div clmov dl,ahadd dl,30hmov dh,0push dxinc simov ah,0cmp al,0jnz repeatl2: pop dxmov ah,2int 21hdec sicmp si,0jnz l2retprint endpatend: mov ah,4chmain endps3 endsend main7.打印输出首地址为data的20个字数组中的最小偶数s1 segment stackdw 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,73,77,-1,-89,-11,61,-22,20,'$' s2 endss3 segmentassume cs:s3,ds:s2,ss:s1main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axmov bx,65534 ;bx存最小数,初始令最小值置为65534mov si,0mov cl,100mov dl,2l2: mov ax,data[si]cmp ax,0jnl l4neg ax ;如果是负数,则求补l4: div clmov al,ahmov ah,0div dlcmp ah,0jnz l1cmp bx,data[si] ;比较最小值和数组中的每个数jl l1 ;如果数组中的数大于最小值跳转到l1mov bx,data[si] ;如果数组中的数小于最小值则将其赋给最小值l1: add si,2cmp si,40jz exitjmp l2exit: lea dx,h1mov ah,9int 21hcmp bx,0jnl l5neg bxmov dl,'-'mov ah,2int 21hl5: mov ax,bxcall print ;调用子程序输出最小值jmp atendprint proc nearmov cl,10mov si,0repeat: div clmov dl,ahadd dl,30hmov dh,0push dxinc simov ah,0cmp al,0jnz repeatl3: pop dxmov ah,2int 21hdec sicmp si,0jnz l3retprint endpatend: mov ah,4chint 21Hmain endps3 endsend main8.输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”s1 segment stackdw 100h dup(?)top label words1 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 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axlea dx,h1mov ah,9int 21hlea dx,str1mov ah,0ahint 21hlea dx,crlfmov ah,9int 21hlea dx,h2int 21hlea dx,str2mov ah,0ahint 21hlea dx,crlfmov ah,9int 21hmov dl,str1+1 ;str1+1为str1实际的字符个数cmp dl,str2+1 ;str2+1为str2实际的字符个数jnz lmov si,2l2: mov dl,str1[si]cmp dl,str2[si]jnz linc sicmp si,50jz l3jmp l2l: lea dx,h4 ;输出不匹配信息mov ah,9int 21hl3: lea dx,h3 ;输出匹配信息mov ah,9int 21hmov ah,4chint 21Hmain endps3 endsend main9.从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数s1 segment stackdw 100h dup(?)top label words1 endss2 segmenth1 db 'Please input a hexadecimal number: ','$'h2 db 'The number is printed in binary number: ','$'temp db 17 dup('$')crlf db 0dh,0ah,24hs2 endss3 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axrepeat: lea dx,h1mov ah,9int 21hmov bx,0mov cx,4newchar: ;接收新字符mov ah,1int 21hcmp al,30hjb repeatcmp al,46hjg repeatcmp al,39hjnb l1 ;如果输入字符大于9跳到l1sub al,30hjmp l2l1: cmp al,41hjb repeat ;如果输入字符小于A,则输入错误,跳到repeatsub al,37h ;输入字符为A~Z,故相应地要减37hjmp l2l2: cbw ;l2为把输入字符转化为数值xchg ax,bxmov dx,10hmul dxxchg ax,bxadd bx,ax;loop newchardec cxcmp cx,0jnz newcharlea dx,crlfmov ah,9int 21hlea dx,h2int 21hmov si,0mov cx,10h ;cx作计数器,即待会要循环16次l5: rol bx,1 ;bx循环左移以为,最高位进标志位jc l3 ;若标志位为1则跳转到l3mov temp[si],'0'jmp l4l3: mov temp[si],'1'l4: inc siloop l5lea dx,tempmov ah,9int 21hmov ah,4chint 21Hmain endps3 endsend main10从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果s1 segment stackdw 100h dup(?)top label words1 endss2 segmenth1 db 'Please input a string: ','$'h2 db 'The number of the chars that is not digit:','$'crlf db 0dh,0ah,24hs2 endss3 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axlea dx,h1mov ah,9int 21hmov cx,0l2: mov ah,1int 21hcmp al,'$'jz exitcmp al,30hjb lcmp al,39hjnb ljmp l2l: inc cxjmp l2exit: lea dx,crlfmov ah,9int 21hlea dx,h2int 21hmov si,0mov bl,10mov ax,cxl4: div blmov dl,ahmov dh,0push dxinc simov ah,0cmp al,0jnz l4l5: pop dxadd dl,30hmov ah,2int 21hdec sicmp si,0jnz l5mov ah,4chint 21Hmain endps3 endsend main11.有一个首地址为mem的10个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零s1 segment stackdw 100h dup(?)top label words1 endss2 segmentmem dw 0,1,0,3,0,0,4,5,6,0,'$'crlf db 0dh,0ah,24hs2 endss3 segmentassume cs:s3,ds:s2,ss:s3main proc farmov ax,s1mov ss,axlea sp,topmov ax,s2mov ds,axmov si,0mov di,2repeat: cmp di,20jz exitmov bx,mem[si]mov dx,mem[di]cmp bx,0jnz nextxchg bx,dxmov mem[si],bxmov mem[di],dxnext: cmp mem[si],0jz ladd si,2l: add di,2jmp repeatexit: mov ah,4chint 21Hmain endps3 endsend main;以下是该算法描述;定义两个指针,当前指针si和检查指针di,先把si指针指向第一个字得到的值bx,;di指向第二个字得到的值dx。