24个汇编实例小程序

合集下载

8086汇编经典例程

8086汇编经典例程

==========================================5.编写一个数组排序(从小到大)的小程序,数组在程序中定义,程序先将原数组显示一遍,然后排序,再将排好序的数组显示一遍。

==========================================AAA SEGMENTBUF DB '45$'L = $ - BUFary dw -897,345,6789,8654,-1234,-3456,-99,-678,987,567,32762,-12121,0,3434,4645,-234,23455,-100,100,1000,-1000dw 572,-2345,-6543,-1234,9999|len dw ($-ary)/2ASSUME CS:AAA, DS:AAAMAIN PROC FARPUSH CSPOP DSLEA SI,ARYMOV CX,LENNEXT3: MOV BX,[SI]CALL DISPCALL SPACE-ADD SI,2LOOP NEXT3CALL CRLFCALL CRLFLEA SI,ARYMOV CX,LENCALL SORTLEA SI,ARYMOV CX,LENNEXT5: MOV BX,[SI]CALL DISP…CALL SPACEADD SI,2LOOP NEXT5MOV AH,4CHINT 21HMAIN ENDPDISP PROCPUSH SIPUSH AXPUSH BX!PUSH DXPUSH CXMOV CX,0CMP BX,0JNL NEXT1NEG BXMOV CX,1NEXT1: LEA SI,BUF+l-1MOV AX,BXMOV BX,10NEXT: MOV DX,0}DIV BXADD DL,30HDEC SIMOV [SI],DLCMP AX,0JNE NEXTCMP CX,0JE NEXT2DEC SIMOV BYTE PTR [SI],'-'NEXT2: MOV DX,SI!MOV AH,9INT 21HPOP CXPOP DXPOP BXPOP AXPOP SIRETDISP ENDPSORT PROC(NEXTT: PUSH CXMOV DI,SIMOV AX,[SI]NEXT0: CMP AX,[DI]JL NEXTQMOV BX,AXMOV AX,[DI]MOV [DI],BXNEXTQ: ADD DI,2LOOP NEXT0MOV [SI],AX…ADD SI,2POP CXLOOP NEXTTRETSORT ENDPCRLF PROCPUSH AXPUSH DXMOV DL,13MOV AH,2|INT 21H MOV DL,10 INT 21H POP DXPOP AXRET CRLF ENDPSPACE PROCPUSH AXPUSH DX】MOV DL,' 'MOV AH,2INT 21HPOP DXPOP AXRETSPACE ENDPAAA ENDSEND MAIN===============================================6.!7.编写一个程序,从键盘输入10个十进制数字字符,然后将这些数字加密存储在缓冲区BUFFER中。

六个简单实用的c++小程序

六个简单实用的c++小程序

阶乘#include<stdio.h>#include<stdlib.h>main(){long int a,b,c;printf("请输入一个正整数:\n");scanf("%d",&a);if (a<=0){printf("Error.\n");system("pause");}b=0;c=1;do{b++;c=b*c;}while(b!=a);printf("%d\n",c);system("pause");}判断质数合数#include<stdio.h>#include<stdlib.h>main(void){int a,b,c;printf("请输入一个大于一的整数:\n");scanf("%d",&a);if (a<=1){printf("Error.\n");system("pause");}b=1;do{b++;c=a%b;}while(c!=0);if (a==b){printf("质数\n");}else{printf("合数\n");}system("pause");}质数表#include<stdio.h> #include<stdlib.h> main(void){int a,b,c;a=1;do{a++;b=1;do{b++;c=a%b;}while(c!=0);if (a==b){printf("%d\n",a);}}while(a!=0); system("pause");}求约数的个数与约数和#include<stdio.h>#include<stdlib.h>main(){int a,b,c,d,e;printf("请输入一个正整数:\n");scanf("%d",&a);if (a<1){printf("Error.\n");system("pause");}else{b=0;d=0;e=0;do{b++;c=a%b;if (c==0){d++;e+=b;}}while(a!=b);printf("约数的个数:%d\n约数和:%d\n",d,e);system("pause");}}表示a~b中含有c的数的个数和c出现的次数#include<stdio.h>#include<stdlib.h>main(void){long int a,b,c,d,e,f,g,h,i,j,k,l,m;printf("请输入三个自然数,表示a~b中含有c的数的个数和c出现的次数:\n");printf("(a<b,c为一位自然数,最多为五位数)\n");scanf("%d,%d,%d",&a,&b,&c);if (a>=b||a<0){printf("Error.\n");system("pause");}if (c>=10||c<0){printf("Error.\n");system("pause");}else{d=0;e=0;do{f=a%10000;g=(a-f)/10000;h=f%1000;i=(f-h)/1000;j=h%100;k=(h-j)/100;l=j%10;m=(j-l)/10;if (g==c){e++;}if (i==c){e++;}if (k==c){e++;}if (m==c){e++;}if (l==c){e++;}if (g==c||i==c||k==c||m==c||l==c){d++;}a++;}while(a!=b+1);printf("a~b中含有c的数的个数:%d\nc出现的次数:%d\n",d,e);system("pause");}}排列组合#include<stdio.h>#include<stdlib.h>int stair(int n){if(n<0){printf("Error\n");return-1;}else if(n<=1)return 1;elsereturn(n*stair(n-1));}main(){int m,n,a,b;printf("请输入两个正整数:\n");printf("第一个数必须大于等于第二个数:\n"); printf("这两个数之间应该用逗号连接:\n"); printf("这两个数表示P a,b= C a,b=\n");scanf("%d,%d",&m,&n);if(m*n<1){printf("Error\n");system("pause");}if(n>m){printf("Error\n");system("pause");}else{a=stair(m)/stair(m-n);b=stair(m)/stair(m-n)/stair(n);printf("P a,b=%d\nC a,b=%d\n",a,b);system("pause");}}。

汇编语言程序经典案例100例

汇编语言程序经典案例100例
汇编语言程序经典案例100例 2023-08-04
当然可以帮你制作PPT!以下是关于《汇编语言程序经典案例 100例》的一份PPT大纲,以Markdown代码框的形式展示。你 可以根据这个大纲,进一步丰富内容,使其达到最少2500字 。
```markdown 汇编语言程序经典案例100例
01 汇编语言程序经典案例100例
案例六:汇编游戏
实现一个简单的汇编游戏,如猜数字或打砖块 结合图形和用户输入,展示汇编语言的实际应用
案例七:汇编与硬件交互
编写控制硬件设备的汇编程序,如LED显示控制 探讨汇编语言与底层硬件交互的原理和方法
案例八:内存管理
展示如何在汇编中进行内存分配和释放 解释堆栈、堆区和数据段的概念及其在汇编中的应用
汇编语言程序经典案例100例
案例一:Hello, World! 案例二:计算器 案例三:字符逆序 案例四:素数判断 案例五:文件操作 案例六:汇编游戏 案例七:汇编与硬件交互 案例八:内存管理 案例九:中断处理 案例十:多任务处理
案例一:Hello, World!
使用汇编语言编写经典的Hello, World!程序 解释程序的结构和汇编指令
案例二:计算器实现一个Fra bibliotek单的计算器程序,支持加减乘除运算 展示汇编中的数值处理和条件分支
案例三:字符逆序
编写程序将输入的字符串逆序输出 探讨字符串处理和循环结构在汇编中的应用
案例四:素数判断
判断输入的数字是否为素数 展示如何进行数值计算和判断,并介绍汇编中的位操作
案例五:文件操作
创建、读取、写入文件的汇编程序 分享文件操作所涉及的系统调用和汇编指令
案例九:中断处理
编写处理外部中断的汇编程序 探讨中断的概念、处理流程以及在汇编中的实现

Linux下简单C语言小程序的反汇编分析

Linux下简单C语言小程序的反汇编分析

Linux下简单C语⾔⼩程序的反汇编分析韩洋原创作品转载请注明出处《Linux内核分析》MOOC课程写在开始,本⽂为因为参加MOOC相关课程⽽写的作业,如有疏漏,还请指出。

选了⼀门Linux内核分析课程,因为阅读内核代码中或多或少要涉及到At&T汇编代码的阅读,所以这⾥写下⼀个对⼀个简单C命令⾏程序的反汇编分析过程,⼀⽅⾯完成作业,另⼀⽅⾯当作练⼿。

下⾯开始:1、编写我们的C语⾔⼩程序这⾥我们使⽤简单的例⼦,代码如下:1 #include <stdio.h>23int exG(int x)4 {5return x + 5;6 }78int exF(int x)9 {10return exG(x);11 }1213int main(void)14 {15return exF(10) + 2;16 }使⽤vim等编辑器写⼊上述代码,保存到main.c,然后使⽤下⾯命令⽣成汇编源⽂件:x86系统:$gcc -S -o main.s main.cx64系统:$gcc -m32 -S -o main.s main.c因为我们这⾥以32位平台为例⼦,所以在x64机器上要加上-m32来使GCC⽣成32位的汇编源⽂件。

2、处理源⽂件执⾏完上述命令后,当前⽬录下就会有⼀个main.s的⽂件,使⽤vim打开,不需要的链接信息[以"."开头的⾏],得到如下汇编代码:1 exG:2 pushl %ebp3 movl %esp, %ebp4 movl 8(%ebp), %eax5 addl $5, %eax6 popl %ebp7 ret8 exF:9 pushl %ebp10 movl %esp, %ebp11 pushl 8(%ebp)12 call exG13 addl $4, %esp14 leave15 ret16 main:17 pushl %ebp18 movl %esp, %ebp19 pushl $1020 call exF21 addl $4, %esp22 addl $2, %eax23 leave24 ret可以看到这个⽂件⾥是GCC帮我们⽣成的汇编代码,这⾥需要说明下AT&T格式和intel格式,这两种格式GCC是都可以⽣成的,如果要⽣成intel格式的汇编代码,只需要加上 -masm=intel选项即可,但是Linux下默认是使⽤AT&T格式来书写汇编代码,Linux Kernel代码中也是AT&T格式,我们要慢慢习惯使⽤AT&T格式书写汇编代码。

python小程序200例

python小程序200例

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("转换后的列表。

微信小程序成功案例

微信小程序成功案例

微信小程序成功案例微信小程序作为一种轻量级应用,已经成为了许多企业和个人开发者的首选。

它不仅可以在微信平台上快速传播,还可以提供丰富的功能和良好的用户体验。

下面,我们将介绍几个成功的微信小程序案例,希望能够给大家一些启发和借鉴。

首先,让我们来看一个餐饮行业的成功案例。

某餐厅开发了一个微信小程序,用户可以在小程序上浏览菜单、预订餐桌、在线支付等。

通过小程序,用户可以方便地了解菜品信息,选择就餐时间,并且无需等待即可享用美食。

这个小程序不仅提升了用户的就餐体验,还为餐厅带来了更多的订单和好评,成为了餐厅发展的一大利器。

其次,让我们来看一个零售行业的成功案例。

某家零售商开发了一个微信小程序,用户可以在小程序上浏览商品、下单购买、查看订单状态等。

通过小程序,用户可以随时随地购物,无需下载App或者打开网页,极大地提高了购物的便利性和效率。

这个小程序不仅为零售商带来了更多的销售额,还提升了用户的购物体验,成为了零售商的一大利润增长点。

最后,让我们来看一个教育行业的成功案例。

某家教育机构开发了一个微信小程序,学生和家长可以在小程序上预约课程、在线学习、查看成绩等。

通过小程序,学生和家长可以方便地了解课程安排,随时随地进行学习,还可以及时了解学习成绩和评价。

这个小程序不仅提升了教育机构的品牌形象,还提高了学生和家长的满意度,成为了教育机构的一大宣传利器。

通过以上案例的介绍,我们可以看到微信小程序在不同行业都取得了成功。

它不仅为企业带来了更多的商机,还提升了用户的体验和满意度。

因此,我们相信微信小程序在未来会有更广阔的发展空间,希望各行各业都能够充分利用微信小程序,为自己的发展注入新的动力和活力。

总结,微信小程序已经成为了许多企业和个人开发者的首选,通过以上案例的介绍,我们可以看到微信小程序在不同行业都取得了成功。

它不仅为企业带来了更多的商机,还提升了用户的体验和满意度。

因此,我们相信微信小程序在未来会有更广阔的发展空间,希望各行各业都能够充分利用微信小程序,为自己的发展注入新的动力和活力。

汇编语言程序设计(5)

汇编语言程序设计(5)
15
例:
第 4 章 汇编语言程序设计简介
ORG 1000H
BUF1: DB 38H, 7FH, 80H
BUF2: DB 45H, 66H
ORG伪指令指定了标号BUF1的地址为1000H, 而DB伪 指令是将其后的二进制数表38H, 7FH, 80H依次存放在1000H, 1001H, 1002H 3 个连续单元之中, BUF2也是一个标号, 其地 址与前一条伪指令连续, 即1003H, 1004H地址单元中依次存 放 45H, 66H。
如果在程序中要多次使用到某一地址,由EQU指令将其赋值 给一个字符名称,一旦需要对其进行变动,只要改变EQU命 令后面的数字即可,而不需要对程序中涉及到该地址的所有 指令逐句进行修改。
13
第 4 章 汇编语言程序设计简介
注意, 由EQU等值的字符名称必须先赋值后使用,且 在同一个源程序中,同一个标号只能赋值一次。 例:
H)=10H。
18
第 4 章 汇编语言程序设计简介
六、BIT——位地址符号指令
指令功能为:将位地址赋值给指定的符号名称,通常用于位符 号地址的定义。
指令如下:
字符名称 BIT 位地址
例如,X1 BIT P1.0
汇编结果为将位地址P1.0赋给变量X1,即在程序中便可 使用X1代替位地址P1.0。
19
(c)多分支
30
第 4 章 汇编语言程序设计简介
2. 一般分支程序结构实例
【例5】 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
1 y 1
0
x0 x0 x0
31
第 4 章 汇编语言程序设计简介
程序如下:
START:
CJNE R0,#00H,SUL1

C语言程序设计 100个小程序代码

C语言程序设计 100个小程序代码

for(i=2;i<=k;i++)
if(x%i==0)break;
3
if(i>k) return(1); else return(0); } main() {int a,s=0,max=0; clrscr(); for(a=200;a<=998;a++) if(prime(a)&&prime(a+2)&&(a+2)>max)max=a+2; s=max+max-2; printf("%d",s); }
int prime(int x)
{ int i,k;
k=sqrt(x);
for(i=2;i<=k;i++)
if (x%i==0) break;
if (i>k) return(1);
else return(0); }
main()
{ int i,s=0;
int prime(int x);
for(i=200;i<=999;i++)
761#include<math.h> int prime(int x) {int i,k; k=sqrt(x); for(i=2;i<=k;i++)
1
if(x%i==0) break; if(i>k) return(1); else return(0); } main() {int a,b,c,i,n=0; clrscr(); for(i=800;i>=300;i--) { a=i/100; b=i%100/10; c=i%10; if((b+c)%10==a&&prime(i)) n++; if(n==1) break;

C#40个小程序

C#40个小程序

1.编一个程序,定义常量Pi=3.,从键盘上输入半径r,求出圆的面积。

const double Pi = 3.;double r,s;("请输入圆的半径");r = ());s = Pi * r * r;("圆的面积是{0}",s);2.编一个程序,定义三个double类型的变量,分别从键盘上输入值给它们,然后用方法把它们输出成一列,小数点对齐,保留3位小数。

double x, y, z;("请输入一个数:");x = ());("请输入一个数:");y = ());("请输入一个数:");z = ());("{0,10:f3}", x);("{0,10:f3}", y);("{0,10:f3}", z);一个程序,从键盘上输入三个数,用三元运算符(? :)把最大数找出来。

float x, y, z, temp;("请输入一个实数:");x = ());("请输入一个实数:");y = ());("请输入一个实数:");z = ());temp = x >= y ? x : y;temp = temp >= z ? temp : z;("最大数为:{0}", temp);4.编一个程序,从键盘上输入三个数,用三元运算符(? :)把最小数找出来。

float x, y, z, temp;("请输入一个实数:");x = ());("请输入一个实数:");y = ());("请输入一个实数:");z = ());temp = x <= y ? x : y;temp = temp <= z ? temp : z;("最大数为:{0}", temp);5.编一个程序,输入一个字符,如果是大写字母,就转换成小写字母,否则不转换。

(完整版)单片机汇编语言经典一百例

(完整版)单片机汇编语言经典一百例

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 微秒。

100个汇编范例

100个汇编范例

定点运算和定点数制转换;范例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,开平方结束。

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集
1. 汇编语言编写的计算器程序,这个程序可以接受用户输入的两个数字,然后执行加减乘除等运算,并将结果输出到屏幕上。

2. 文件复制程序,这个程序可以使用汇编语言编写,实现将一个文件的内容复制到另一个文件中的功能。

3. 简单的操作系统内核,使用汇编语言编写一个简单的操作系统内核,可以包括基本的文件管理和进程调度功能。

4. 汇编语言写的游戏,例如经典的贪吃蛇游戏或者俄罗斯方块游戏,这些游戏可以使用汇编语言编写。

5. 串口通信程序,使用汇编语言编写一个可以通过串口进行通信的程序,可以实现数据的发送和接收。

6. 硬件驱动程序,编写一个简单的汇编语言程序,可以控制硬件设备,例如控制LED灯的亮灭。

7. 汇编语言编写的加密解密算法,实现一个简单的加密解密算
法,例如凯撒密码或者简单的异或运算。

8. 简单的图形界面程序,使用汇编语言编写一个简单的图形界面程序,可以实现基本的窗口和按钮等功能。

9. 汇编语言编写的网络通信程序,实现一个简单的网络通信程序,可以进行基本的数据传输和接收。

10. 汇编语言编写的嵌入式系统程序,例如可以编写一个控制LED灯的嵌入式系统程序,可以通过按键控制LED的亮灭。

VB小程序代码实例

VB小程序代码实例

VB小程序代码实例VB小程序是一种基于Visual Basic语言开发的应用程序,它可以在Windows 操作系统上运行。

本文将为您提供一个VB小程序代码实例,帮助您了解如何编写和运行一个简单的VB小程序。

代码实例如下:```vbImports SystemPublic Class HelloWorldPublic Shared Sub Main()Console.WriteLine("Hello, World!")Console.ReadLine()End SubEnd Class```上述代码是一个经典的“Hello, World!”程序,它会在控制台输出一条问候语,并等待用户按下回车键。

下面是代码解释:- `Imports System`:这个语句告诉编译器我们将使用System命名空间中的类和方法。

- `Public Class HelloWorld`:这是一个公共类的声明,类名为HelloWorld。

- `Public Shared Sub Main()`:这是程序的入口点,它是一个公共静态方法,程序从这里开始执行。

- `Console.WriteLine("Hello, World!")`:这行代码会在控制台输出一条问候语。

- `Console.ReadLine()`:这行代码会等待用户按下回车键,以便程序暂停执行。

您可以将上述代码复制到一个文本编辑器中,并将文件保存为`.vb`扩展名。

然后,使用VB编译器将其编译为可执行文件,并在Windows操作系统上运行。

这个简单的VB小程序只是一个入门示例,您可以根据自己的需求和兴趣编写更复杂的VB小程序。

VB语言具有丰富的特性和功能,可以用于开发各种类型的应用程序,包括图形用户界面(GUI)应用程序、数据库应用程序、Web应用程序等。

希望这个VB小程序代码实例能够帮助您入门VB编程,并为您今后的学习和开发提供一些参考。

汇编语言小程序例子

汇编语言小程序例子

盛年不重来,一日难再晨。

及时宜自勉,岁月不待人。

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,0DH STRING1 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,BH JZ AA2JMP AA1AA3: LEA BX,R1 MOV CX,7 AA4: MOV DL,[BX] INC BXMOV AH,2INT 21HLOOP AA4JMP EAA1: LEA BX,R2 MOV CX,10 AA5: MOV DL,[BX] INC BXMOV AH,2INT 21HLOOP AA5INT 21HCODE ENDSEND START3.从键盘读入一个四位的十六进制数,CRT显示等值的二进制数.由于每个十六进制数位对应4个二进制,所以每读入一个十六进制位后,即可将其对应的4个二进制位依次输出。

C语言经典例程100例(经典c程序100例)

C语言经典例程100例(经典c程序100例)

C语⾔经典例程100例(经典c程序100例)⼩编注:以下代码因为编辑器等原因,需要将原来空⽩区域⽤tab或空格替换即可运营。

【程序1】题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?1.程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。

组成所有的排列后再去掉不满⾜条件的排列。

2.程序源代码main(){int i,j,k;printf("\n");for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ printf("%d,%d,%d\n",i,j,k); }}【程序2】题⽬:企业发放的奖⾦根据利润提成。

利润(I)低于或等于10万元时,奖⾦可提10%;利润⾼于10万元,低于20万元时,低于10万元的部分按10%提成,⾼于10万元的部分,可可提成7.5%;20万到40万之间时,⾼于20万元的部分,可提成5%;40万到60万之间时⾼于40万元的部分,可提成3%;60万到100万之间时,⾼于60万元的部分,可提成1.5%,⾼于100万元时,超过100万元的部分按1%提成,从键盘输⼊当⽉利润I,求应发放奖⾦总数?1.程序分析:请利⽤数轴来分界,定位。

注意定义时需把奖⾦定义成长整型。

2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15; if(i<=100000) bonus=i*0.1; else if(i<=200000) bonus=bonus1+(i-100000)*0.075; else if(i<=400000) bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03; else if(i<=1000000) bonus=bonus6+(i-600000)*0.015; else bonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);}【程序3】题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?1.程序分析:在10万以内判断,先将该数加上100后再开⽅,再将该数加上268后再开⽅,如果开⽅后 的结果满⾜如下条件,即是结果。

20个简单汇编语言程序

20个简单汇编语言程序

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:从键盘输入数据这个程序将接收从键盘输入的数据,并在屏幕上显示。

理学汇编语言程序设计

理学汇编语言程序设计

内部RAM
50H 51H 52H
53H 54H 55H
高字节
低字节 + 高字节
低字节
00H 50H 51H 52H CY
R1→55H 54H 53H
R0→52H 51H 50H
20H
低字节 中字节
加数
高字节
低字节 中字节
被加数
高字节
...

00H CY
程序:
CLR C
更高效的方法 是编制循环程

后 面 讲
START: MOV A, #30H
MOV B, #50H
……
指令地址
2000H #30H 2002H
3000H 3001H 3002H
机器码
78 30
E6 …
23 64
41
源程序 ORG 2000H MAIN:MOV R0,
MOV A,@R0
ORG 3000H DB 23H,100,‘A’
参照书P46
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码。 2)确定每条指令在存储器中的存放地址。 3)提供错误信息。 4)提供目标执行文件(*.OBJ/*.HEX)和
列表文件(*.LST)。
一、汇编语言指令类型:
1. 机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2. 伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码。
机器汇编一般是在PC机上利用一些汇编软件进行。 目前几乎所有的单片机仿真器配的开发软件都有汇编 程序,在源程序编写完成后使用汇编功能菜单即可进行对 源程序汇编。在汇编时若发现源程序有语法错误或跳转超 出范围等情况,系统会将错误显示给用户。用户在改正错 误后,需再对源程序进行汇编,直到源程序完全没有语法 错误。此时汇编程序会生成与其对应的目标文件。一般情 况下是生成HEX(十六进制)和BIN(二进制)文件。

44 一个小程序编写_UART例子

44 一个小程序编写_UART例子
r1 = 0x0000; r4 = 0x00C0; [P_UART_Command1] = r1; [P_UART_Command2] = r4;
模版与实例程序对比
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:

L_ReSendData: L_Check_TxRDY:
➢ P_UART_Command2 寄存器设置b7、 b6脚为1,允许接收与发送
➢ P_UART_BaudScalarLow(写0x00C0) 与P_UART_BaudScalarHigh(写 0x0000)联合设置波特率,采用 115200bps
复习 单一模块编程共性
共性一:程序结构
每个单一模块的编程,基本的程序结构 是:
[P_Watchdog_Clear] = r1
Jmp loop
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:
… [P_Watchdog_Clear] = r1 Jmp loop
模版与实例程序对比
L_Check_RxRDY: r1 = 0x0001 [P_Watchdog_Clear] = r1 r2 = [P_UART_Command2]; r2 &= 0x0080; JZ L_Check_RxRDY; r4 = [P_UART_Data];
Sunplus SPCE061A 微控制器
单一功能模块UART程序编写举例说明
讲解目的
➢ 串行通信应用广泛,举例说明SPCE061A 与PC机实现串行收发数据
➢ 结合例子巩固对SPCE061A单一模块编程 思路。
数据通讯

汇编语言_24个汇编实例小程序

汇编语言_24个汇编实例小程序

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,完成输出空行的功能。

创意编程小程序实例

创意编程小程序实例

创意编程小程序实例
1.画图小程序:使用Python绘制各种图形,如正方形、三角形、五角星等,并给图形添加不同的颜色和动画效果。

2. 文字处理小程序:使用Python编写一个简单的文本编辑器,可以实现文本输入、保存、撤销、复制、粘贴等功能。

3. 游戏小程序:使用Python编写一个简单的游戏,如井字棋、石头剪刀布、贪吃蛇等。

4. 数据可视化小程序:使用Python处理大量数据,并将数据可视化为图表、图形等形式,例如使用matplotlib库绘制折线图、柱
状图等。

5. 网络爬虫小程序:使用Python编写一个简单的网络爬虫,可以自动获取网站上的数据并进行分析。

6. 机器学习小程序:使用Python编写一个简单的机器学习程序,如分类、聚类、回归等,利用已有的数据训练模型并进行预测。

7. 聊天机器人小程序:使用Python编写一个简单的聊天机器人,可以与用户进行简单的对话和交互,例如回答问题、闲聊等。

8. 自动化运维小程序:使用Python编写一个简单的自动化运维程序,可以自动化管理服务器、更新软件等操作。

- 1 -。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

24个汇编小程序题目列表:1.逆序输出字符串“BASED ADDRESSING”2.从键盘上输入两个数,分别放到x,y单元,求出它们的和3.是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域4.键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出5.从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符7.把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来8.求出首地址为data的100个字数组中的最小偶数,并把它放在ax中9输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”10从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数11从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果12有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零13.从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。

如有,则把cl的第五位置1,否则将该位置置014.在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f 分别考虑有符号数、无符号数情况)15.一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。

试编制一个程序,把既在A中又在B中出现的整数存放于数组C中16.设在A、B和D单元中分别存放着三个数。

若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。

请编写此程序17.从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果18.已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变19.写一段子程序skiplines,完成输出空行的功能。

空行的行数由用户在主程序中通过键盘输入,并将行数放在ax寄存器中20.设有10个学生成绩分别是76, 69,84,73,88,99,63,100和80。

试编写一个子程序统计60-69分,70-79分,80-89分,90-99分和100分的人数,并分别放到S6,S7,S8,S9,S10单元中21.编写子程序嵌套结构的程序,把整数分别用二进制和八进制显示出来22.在D盘根目录建立一个文件abc.txt,第一次向文件写入“123456”六个字符,第二次增加“abcdefg”几个字符23从键盘上输入文本文件:“d:\temp.txt”的内容后,然后新建一个文件“d:\temp2.txt”,把前一个文件的所有内容复制到后一个文件中24从键盘上输入一个十进制数,以十六进制数显示出来。

要求子程序用寄存器参数传送方法25.试编制一个程序,把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,9mov 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 ends6.把一个包含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,20h,'$'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 lmov ah,9int 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 endpint 21Hmain 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 repeatmov 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,axmov 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 21hint 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 repeatjnb 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 b x,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。

相关文档
最新文档