汇编语言实例 - 图文

更新时间:2024-04-27 00:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

编程题在下述题目中选择两个:(大家看运气了,猜中有奖)

1. 试编程序将内存从50000H到5FFFFH的每个单元均写入数55H,并再逐个单元读出比较,看写入的与

读出的是否一致。若全对,则将AL置0;只要有错,则将AL置0F START: MOV AX,5000H MOV DS,AX MOV SI,0

MOV CX, 0FFFFH

LOOP1: MOV BYTE PTR [SI], 55H MOV AL, [SI] CMP AL, 55H JNZ LOOPERR LOOP2: INC SI

LOOP LOOP1

MOV BYTE PTR [SI], 55H ;最后一个单元 MOV AL, [SI] CMP AL, 55H JNZ LOOPERR

MOV AL, 0 ;全对 JMP LOOPOUT LOOPERR: MOV AL, 0FFH LOOPOUT: NOP

2. 试写一子程序,完成对一个8位无符号数乘6的操作。要求:(1)只能用传送、加法及移位指令;(2)

入口参数(即8位无符号数)放于AL中,出口参数(即乘6后的结果)放于AX。

MULTI6 PROC NEAR PUSH BX MOV AH, 0

SHL AX, 1 ;乘 2 MOV BX, AX

SHL AX, 1 ;乘 4 ADD AX, BX ;乘 6 POP BX RET MULTI6 ENDP

3. 自符号地址为MARK开始的内存缓冲区中,存有100个学生的某门课的考试成绩。试找出成绩不低于

80分以及成绩低于60分的学生个数,同时求出最高的成绩分及最低的成绩分数,并将它们分别存于符号地址为PST、FST、MAXMK及MINMK的四个单元中。要求写出完整的数据段及代码段。 DATA SEGMENT

MARK DB 100 DUP(?) PST DW 0 FST DW 0 MAXMK DB 0 MINMK DB 100 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV CX, 100

MOV BX, OFFSET MARK AGAIN: MOV AL, [BX] CMP AL, MAXMK JC HIGHL

MOV MAXMK, AL ; update highest mark HIGHL: CMP AL, MINMK JNC MKCHK

MOV MINMK, AL ; update lowest mark MKCHK: CMP AL, 60 JNC HIGHMK

INC FST ; increase the no. of students whose mark < 60 JMP CHKFH HIGHMK: CMP AL, 80 JC CHKFH

INC PST ; increase the no. of students whose mark >= 80 CHKFH: INC BX

LOOP AGAIN MOV AX, 4C00H

INT 21H CODE ENDS END START

4. 编写一段程序,接收从键盘输入的10个数(输入回车符后结束),然后将这些数按位取反后存于BUFF

开始的缓冲区中。

DATA SEGMENT ;数据段 BUFF DB 10 DUP (0) ;数据区 DATA ENDS

STACK SEGMENT STACK ‘STACK’;堆栈段 DB 100 DUP (?) STACK ENDS

CODE SEGMENT ;代码段

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX, 10 LEA SI, BUFF

REPT1: MOV AH, 1 ;键入数据 INT 21H

CMP AL, 0DH ;判断是否是回车键 JE NEXT1 ;若键入回车,则结束 NOT AL

MOV [SI], AL INC SI

LOOP REPT1 ;若已输满 10个数则结束 NEXT1: MOVAX,4C00H INT 21H CODE ENDS END START

5. 编写一个程序,要求运行时屏幕显示‘BELL’,同时响铃一次(响铃的ASCII码为07)。 Code SEGMENT

ASSUME CS : code Start: MOV DL, 42H MOV AH, 2 INT 21H

MOV DL, 45H MOV AH, 2 INT 21H

MOV DL, 4CH MOV AH, 2 INT 21H

MOV DL, 4CH MOV AH, 2 INT 21H MOV DL, 7 MOV AH, 2 INT 21H

MOV AH, 4CH INT 21H Code ENDS END Start

6. 自BUFFER开始的缓冲区有6个字节型的无符号数:10,0,20,15,38,236,试编制8086汇编语言

程序,要求找出它们的最大值、最小值及平均值,分别送到MAX、MIN和AVI三个字节型的内存单元。

DATA SEGMENT

BUFER DB 10 ,0,20 ,15,38,236 MAX DB 0 MIN DB 0 AVI DB 0

DATA ENDS (2 分) STACK SEGMENT PARA STACK ‘STACK’ DW 100 DUP (?) STACK ENDS

CODE SEGMENT

ASSUME CS :CODE,DS :DATA ,SS:STACK START PROC FAR BEGIN : PUSH DS MOV AX ,0 PUSH AX

MOV AX ,DATA MOV DS ,AX LEA DI ,BUFFER

MOV DX ,0 ;使DH=0 ,DL=0 MOV CX ,6

MOV AX ,0 ; 和清 0 MOV BH ,0 ; 最大值

MOV BL ,0FFH ; 最小值 LOP1: CMP BH,[DI]

JA NEXT1 ; 若高于转移 MOV BH ,[DI]; 大值→BH NEXT1 : CMP BL,[DI] ;

JB NEXT2 ; 若低于转移

MOV BL ,[DI]; 小值→BL NEXT2 : MOV DL ,[DI]; 取一字节数据 ADD AX ,DX ; 累加和 INC DI

LOOP LOP1

MOV MAX ,BH ;送大值

MOV MIN , BL ;送小值 MOV DL , 6

DIV DL , ;求平均值 MOV AVI , AL ;送平均值 RET START ENDP CODE ENDS

END BEGIN (3 分) 7. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

abc: mov ah,1 int 21h

cmp al,’a’ jb stop

cmp al,’z’ ja stop

sub al,20h mov dl,al mov ah,2 int 21h

jmp abc stop: ret

8. 编写程序,比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示“MATCH”,若

不同则显示“NO MATCH”。 datarea segment

string1 db ‘asfioa’ string2 db ‘xcviyoaf’

mess1 db ‘MATCH’,’$’ mess2 db ‘NO MATCH’,’$’ datarea ends

prognam segment main proc far

assume cs:prognam,ds:datarea start: push ds

sub ax,ax push ax

mov ax,datarea mov ds,ax mov es,ax begin:

mov cx, string2-string1 mov bx, mess1-string2 cmp bx,cx jnz dispno

lea dx,addr lea si,string1 lea di,string2 repe cmpsb jne dispno

mov ah,9

lea dx,mess1 int 21h ret dispno:

mov ah, 9 lea dx, mess2 int 21h ret

main endp

prognam ends

end start

9. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出

10. 编制程序实现下述功能:比较片内RAM中,NUM1和NUM2两个单元内的无符号数的大小,大数存入MAX

单元,小数存入MIN单元,若两个相等,则F0置位。

注意: 如果对代码按照标准进行注释,则存在加分的可能

教你叠各种折纸】玫瑰、莲花灯、雪花、樱花、

青苹果……!(推荐转载收藏)

建议先转到自己空间以后慢慢学习. 下面就教你简单玫瑰花的折法图解 大家动手吧~

将这一组如图所示重叠起来

中间用回形针暂时固定

按照以上方法做好3组

将固定用的回形针拿掉,用细线把这四组紧紧的拴在一起

整理开来

将最上面一层向中间折起来

陆续把其余的三层也向中间折起来

叶子部分不用折起来,展开即可

一朵漂亮的祈福莲花就完成了

中间放上蜡烛即可成为中秋节的莲花灯哦

雪花的折法

纸折的雪花,是不是很漂亮

纸雪花的折法

下面是具体的步骤:

教你如何折樱花

十步教你折出漂亮的樱花。

材料:纸一张,浆糊

步骤: 折叠一次

看图,不废话

这里也很简单

这里考验你的眼力了

怎么样有点成就感了吧

抹上胶水,定型即可。

用花色纸叠出的更好看(⊙o⊙)哦

成品图,用多种颜色,不同的花色的纸张折叠出的樱花更多彩:

0

卷卷花球的折法

今天要做的卷卷花球。

步骤1:

正方形纸,需要30张,我选了五种颜色每样6张

步骤2:

如图对折,后打开,另一面也对折

步骤3:

三角形打开后,如图向底边对折

步骤4:

折成图上的大三角

步骤5:

用牙签卷起一边,向中线卷,卷数越多越好

步骤6: 其余几边同样卷法

步骤7:

提起一边,把五种不同颜色的纸卷在一起

步骤8:

依照三角五角的组合方式,把30个组合在一起,就完成了

折法图解如下:

所需要财料:彩色纸张、胶水、牙签、纸星星、小刀等。

图解1:将A4大小的彩色折纸,裁成正方形,然后,将这个正方形的四条边分别九等分,沿分好的九等分点对折。就成了如图的样子。(之后,便按照图解2到图解11的折法,

继续往下折。)

图解2:

图解3:

图解4:

图解5:

图解6:

图解7:

图解8:

图解9:

图解10:

图解11:

图解12:按以上步骤折好之后,将两边粘起来,就成了圣诞树的样子,正面和背面如

下图。

图解13:

完成:整理好圣诞树的枝叶,再用牙签将刚才准备的小星星穿到树尖上,就完成啦!

-

风信子花的做法

学会做美丽的风信子花。

你需要:黄色的皱纹纸,铁丝,双面胶或白胶,绿胶带,绿色的皱纹纸

风信子花的做法:

用黄色的皱纹纸剪出一个正方形

用正方形皱纹纸剪出几个花形

将铁丝用钳子弯一个钩子状

将小花瓣穿过铁丝一端穿过去用双面胶粘好

再将小花瓣穿过铁丝一端穿过去用双面胶粘好

再将小花瓣穿过铁丝一端穿过去用双面胶粘好穿13到15个花就可以了

折纸——怎样折3D雪花

这个相对于二维的雪花折纸略微有点难,但它看起来却是超级棒,并且适合锻炼孩子们在制作手工艺时的耐心,以及熟练使用剪刀。下面来制作一个六角三维雪

花,让你的圣诞树或橱柜更完美。

步骤:

1.收集准备需要的材料(请见“所需物品”)

2.把 6 张纸的对角折上,如果你的纸不是正方形,那么把长方形多余的边条裁

掉,让它对齐得更好。

3.沿着有折线的角剪出 3 条直线,注意未折角那里不要剪断。同一边的剪切线应互相平行,在中间与其它线相近但不能相交,在它们之间留点间距。不懂可以添加作者扣扣三二八八五四四一四留言,你可以把三角形再对折,这样一次就可以剪出两条线,来制作对称的雪花。对于比较厚的纸这样可能不容易剪开。

4.把纸展开,以菱形面对你。

5.按住菱形的一边,把中间的角卷成筒状。把这两版粘起来,你应该能看到三角

形卷起的每个边。

6.把菱形翻过来,在反面把里面的两个角卷成筒并粘牢。这个应该比第一个卷筒

更大、更圆。

7.按照上面的方法,在反面反复地的把所有纸边连接到一起。

8.对于另外 5 张纸仍然重复操作(第 3 – 7 步)。

9.把 3 个完成的卷纸连接在一起(用指尖捏住),之后用另一只手把它们钉起来,另外 3 个也用同样的方式处理。现在你就有 2 组由 3 部分组成的零件了。

10.将这两组零件的中间钉起来,现在就已经有雪花的雏形了。

本文来源:https://www.bwwdw.com/article/ygup.html

Top