24个汇编实例小程序文件
汇编经典小程序

汇编经典小程序(总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开始的缓冲区中,编写一个能将它们从大到小从新排列的程序。
(完整版)8086汇编经典例程,推荐文档

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'
20个简单汇编语言程序 -回复

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个简单的汇编语言程序,并提供详细的说明和示例代码。
汇编语言程序经典案例100例

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

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. 判断一个字符串是否为有效的变量名:输入一个字符串,判断它是否为有效的变量名并输出结果。
汇编小程序_11

MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #20H
MOVX @DPTR, A
RET
;======芯片擦除, 擦除后全为FF======
ERASE: MOV DPTR, #ADDR_UNLOCK1
MOV R4, #80H
MOV A, #55H
UWLP1: MOVX @DPTR, A
INC DPL
DJNZ R4, UWLP1
RET
;======去除保护特性======
UPROT: MOV DPTR, #ADDR_UNLOCK1
MOV A, #0AAH
MOVX @DPTR, A
MOV R4, #80H ;128
MOV A, #00H
PWLP1: MOVX @DPTR, A
INC DPL
INC A
DJNZ R4, PWLP1
RET
;======不带保护写, 写入128字节的55H======
UPWRITE:MOV DPTR, #START_ADDR
MOV A, #0AAH
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK2
MOV A, #55H
MOVX @DPTR, A
MOV DPTR, #ADDR_UNLOCK1
MOV A, #0A0H
MOVX @DPTR, A
MOV DPTR, #START_ADDR
DLP1: MOV R6, #0F0H
DLP2: NOP
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("转换后的列表。
20个简单汇编语言程序

20个简单汇编语言程序摘要:一、汇编语言概述二、20 个简单汇编语言程序的分类1.算术运算类2.逻辑运算类3.移位操作类4.循环操作类5.条件跳转类6.子程序调用类7.输入输出类三、每类程序的简要说明和示例1.算术运算类2.逻辑运算类3.移位操作类4.循环操作类5.条件跳转类6.子程序调用类7.输入输出类四、总结正文:一、汇编语言概述汇编语言是一种低级编程语言,它与计算机硬件的操作紧密相关。
汇编语言通过指令的操作来实现对计算机硬件的控制。
与高级语言相比,汇编语言更加接近计算机硬件,执行效率更高。
但是,由于汇编语言依赖于特定的计算机架构,所以其可移植性较差。
二、20 个简单汇编语言程序的分类本文将为大家介绍20 个简单的汇编语言程序,这些程序可以分为以下几类:1.算术运算类:实现加、减、乘、除等基本算术运算。
2.逻辑运算类:实现与、或、非等基本逻辑运算。
3.移位操作类:实现左移、右移、循环移位等移位操作。
4.循环操作类:实现for 循环、while 循环等循环控制结构。
5.条件跳转类:实现if-else 语句、switch-case 语句等条件跳转控制结构。
6.子程序调用类:实现子程序的调用和返回。
7.输入输出类:实现对输入输出设备的操作,如从键盘读取数据、向屏幕输出数据等。
三、每类程序的简要说明和示例1.算术运算类算术运算类程序主要包括加法程序、减法程序、乘法程序和除法程序等。
例如,以下是一个简单的加法程序:```DATA SEGMENTA DW 10B DW 20SUM DW 0DATA ENDSCODE SEGMENT ASSUME DS:DATA, CS:CODE START:MOV AX, DATAMOV DX, SUMCALL ADDMOV AH, 02HINT 21HADD PROCMOV AX, PTR [DATA]ADD AX, PTR [DATA + 2]MOV PTR [SUM], AXRETADD ENDPCODE ENDSEND START```2.逻辑运算类逻辑运算类程序主要包括与运算程序、或运算程序和非运算程序等。
- 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,4chmain 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,10inc 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,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 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,则输入错误,跳到repeat sub 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。