24个汇编实例小程序

  • 格式:doc
  • 大小:242.00 KB
  • 文档页数:47

下载文档原格式

  / 47
  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,否则将该位置置0

14.在首地址为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 ;定义栈段s1

dw 100 dup(?) ;定义栈空间为100

top label word ;top指向栈顶

s1 ends

s2 segment ;定义数据段s2

s db 'BASED ADDRESSING','$' ;定义字符串s

S2 ends

s3 segment ;定义代码段s3

assume cs:s3,ds:s2,ss:s1

main proc far

mov ax,s1 ;栈初始化——

mov ss,ax

lea sp,top ;——栈初始化

mov ax,s2 ;数据段初始化——

mov ds,ax ;——数据段初始化

mov si,15

l: mov dl,s[si] ;dl获取字符串s的最后一个(从零开始的第十五个字符)mov ah,2 ;调用int 21h 2号功能输出dl上的值

int 21h

dec si ;寄存器减一,准备获取下一个字符

cmp si,0

ja l

mov ah,4ch ;终止

int 21h

main endp

s3 ends

end main

2.从键盘上输入两个数,分别放到x,y单元,求出它们的和

s1 segment stack

dw 100h dup(?)

top label word

s1 ends

s2 segment

h1 db 'Please input x:','$' ;提示输入

h2 db 'Please input y:','$' ;提示输入

h3 db 'z=x+y:','$' ;提示输出

crlf db 0dh,0ah,24h ;定义回车换行

x dw ?

y dw ?

s2 ends

s3 segment

assume cs:s3,ds:s2,ss:s3

main proc far

mov ax,s1 ;初始化——

mov ss,ax