第4章 汇编语言程序设计Word文档下载推荐.docx
- 文档编号:17369701
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:40
- 大小:69.78KB
第4章 汇编语言程序设计Word文档下载推荐.docx
《第4章 汇编语言程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第4章 汇编语言程序设计Word文档下载推荐.docx(40页珍藏版)》请在冰豆网上搜索。
2P<
Q,转L2(Z=2)
JGL1;
2P>
Q,转L1(Z=1)
CMPAX,Y;
如果高位相等,则比较低位
JBEL2;
2P的低位小于等于Q的低位,转L2(Z=2)
L1:
MOVZ,1
JMPSHORTEXIT
L2:
MOVZ,2
EXIT:
……
程序根据2P与Q的大小,确定Z的值。
如果2P≤Q,则Z=2
如果2P>
Q,则Z=1
请参阅程序注解
8.编写指令序列,将AX和BX中较大的绝对值存入AX,较小的绝对值存入BX。
ANDAX,AX
JGESKIP1
NEGAX
SKIP1:
ANDBX,BX
JGESKIP2
NEGBX
SKIP2:
CMPAX,BX
JGESKIP3
XCHGAX,BX
SKIP3:
……
9.编写指令序列,比较AX、BX中的数的绝对值,绝对值较大的数存入AX,绝对值较小的数存入BX。
PUSHAX
PUSHBX
ANDAX,AX
POPBX
POPAX
10.编写指令序列,如果AL寄存器存放的是小写字母,把它转换成大写字母,否则不改变AL内容。
CMPAL,‘a’
JBDONE
CMPAL,‘z’
JADONE
SUBAL,‘a’-‘A’
DONE:
11.计算分段函数:
X的值从键盘输入,Y的值送显示器输出。
INCLUDEYLIB.H
DATASEGEMNT
MESS1DB0DH,0AH,‘InputvalueofXplease:
$’
MESS2DB0DH,0AH,‘Y=:
$’
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEADX,MESS1
CALLREADINT;
输入X的值
CMPAX,-2
JGEL2
L1:
SUBAX,3;
AX←X-3
JMPDONE
L2:
CMPAX,3
JGL3
MOVBX,AX
ADDAX,AX;
AX←2X
AX←4X
ADDAX,BX;
AX←5X
ADDAX,6;
AX←5X+6
L3:
MOVAX,2;
AX←2
DONE:
LEADX,MESS2
CALLWRITEINT;
输出Y的值
CALLCRLF
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
12.计算分段函数:
A,B的值从键盘输入,Y的值送显示器输出(∧表示“并且”,∨表示“或者”)。
MESS1DB0DH,0AH,‘InputthevalueofAplease:
MESS2DB0DH,0AH,‘InputthevalueofBplease:
MESS3DB0DH,0AH,‘Y=:
ADW?
BDW?
输入A
MOVA,AX
输入B
MOVB,AX
JLL1;
B<
0,转L1
CMPA,0
A<
JNZSKIP1
CMPB,0
JZL2;
A=0&
&
B=0,转L2
JMPEXIT;
B≠0,无定义,转EXIT
SKIP1:
CMPB,0
JLEEXIT;
A≠0&
B=0,无定义,转EXIT
L3:
MOVAX,A
SUBAX,B
JMPDISP
L2:
MOVAX,2
L1:
ADDAX,B
DISP:
LEADX,MESS2
EXIT:
MOVAX,4C00H
说明:
如果把A、B看作是平面直角坐标的两根轴,那么这个函数在A,B的正轴上无定义。
无法计算,也无法输出结果。
13.编写程序,求10元素字数组LIST中绝对值最小的数,存入MIN单元。
DATASEGEMNT
LISTDW-56,+12,88,-126,-5,16,32,-99,72,-18
MINDW?
MINABSDW?
MOVAX,LIST
MOVMIN,AX;
将数组第一个元素假设为绝对值最小的数
MOVMINABS,32767;
最小的绝对值假设为32767
LEASI,LIST
MOVCX,10
AGAIN:
MOVAX,[SI]
CMPAX,0
JGESKIP1
NEGAX;
求绝对值
CMPAX,MINABS;
绝对值与假设的最小绝对值比较
JGESKIP2;
假设的绝对值较小,跳过
MOVMINABS,AX;
保存新的最小绝对值
MOVAX,[SI];
取出新的绝对值最小的数
MOVMIN,AX;
保留新的绝对值最小的数
SKIP2:
ADDSI,2
LOOPAGAIN
MOVAX,4C00H
一定要预设最小的绝对值和绝对值最小的数,而且这个绝对值最小的数必须来自LIST数组。
14.编写程序,求20元素无符号字数组ARRAY中最小的奇数,存入ODD单元,如果不存在奇数,将ODD单元清零。
ARRAYDW56,12,88,126,5,16,32,99,72,18
DW116,34,92,32,156,42,816,16,15,218
ODDDW?
MOVBX,0
MOVODD,65535;
将65535假设为最小的奇数
LEASI,ARRAY
MOVCX,20
TESTAX,1;
测试是否为奇数
JZSKIP;
不是奇数跳过
INCBX;
记录奇数个数
CMPAX,ODD;
奇数与预设的最小奇数比较
JGESKIP;
大于预设奇数,跳过
MOVODD,AX;
小于预设奇数,保留
SKIP:
CMPBX,0;
判有无出现过奇数
JNZDONE
MOVODD,0;
未出现过,把ODD单元清零
DONE:
15.一个有符号字数组以0为结束标志,求这个数组的:
最大值、最小值、平均值。
LISTDW-56,+12,88,-126,-5,16,32,-99,72,-18,0
MAXDW?
AVGDW?
MOVMIN,32767;
将32767假设为最小的数
MOVMAX,-32768;
将-32768假设为最大的数
MOVAVG,0;
AVG用作累加器,清零
MOVCX,0
JZDONE;
找到零元素,转DONE结束处理
INCCX;
纪录非零元素个数
ADDAVG,AX;
累加
CMPAX,MIN
MOVMIN.AX;
比预设最小值还小,保留
CMPAX,MAX
JLESKIP2
MOVMAX,AX;
比预设最大值还大,保留
JMPAGAIN
JCXZNULL;
元素个数为零,转NULL处理
MOVAX,AVG
CWD
IDIVCX
MOVAVG,AX;
计算平均值
JMPEXIT
NULL:
MOVMIN,0;
元素个数为0,将“最大值”、“最小值”
MOVMAX,0;
“平均值”清零
MOVAVG,0
16.数组SCORE中存有一个班级40名学生的英语课程成绩。
按照0~59,60~74,75~84,85~100统计各分数段人数,存入N0,N1,N2,N3变量内。
SCOREDW40DUP(?
);
运行前置入具体数据
N0DW?
N1DW?
N2DW?
N3DW?
MOVN0,0;
各计数器清零
MOVN1,0
MOVN2,0
MOVN3,0
LEASI,SCORE
MOVCX,40
CMPAX,59;
分段测试
JAL1
L0:
INCN0
JMPNEXT
CMPAX,74
JAL2
INCN1
CMPAX,84
JAL3
INCN2
CMPAX,100
JANEXT
INCN3
NEXT:
17.STRING是一个16个字符组成的字符串,RULE是一个字整数。
编写程序,测试STRING中的每一个字符,如果该字符为数字字符,把RULE中对应位置1,否则置0。
STRINGDB16DUP(?
运行前置入具体字符
RULEDW?
DATAENDS
MOVRULE,0;
RULE置为初始状态
LEASI,STRING
MOVCX,16
SHLRULE,1;
右侧空出一位
MOVAL,[SI]
CMPAL,‘0’;
测试是否数字
JBNEXT
CMPAL,‘9’
JANEXT
ORRULE,1;
将RULE对应位置1
INCSI
18.编写程序,从键盘上输入一个无符号字整数,用“四进制”格式输出它的值(也就是,每2位二进制看作一位四进制数,使用数字0~3)。
DATASEGEMNT
MESS1DB0DH,0AH,‘Inputanumberplease:
MESS2DB0DH,0AH,‘Thenumberinquardri_systemis:
CALLREADDEC;
输入一个无符号整数
MOVBX,AX;
转存到BX
MOVAH,9
INT21H;
输出前导信息
MOVCX,8
ONE:
ROLBX,1
ROLBX,1;
最高2位移到最低位
MOVDL,BL;
转存到DL
ANDDL,00000011B;
保留最低2位
ORDL,30H;
转换成ASCII代码
MOVAH,2
输出
LOOPONE
CALLCRLF
19.编写程序,把一个30个元素的有符号字数组ARRAY按照各元素的正负分别送入数组P和M,正数和零元素送P数组,负数送M数组。
ARRAYDW30DUP(?
汇编之前置入数据
PDW30DUP(?
)
MDW30DUP(?
LEABX,ARRAY;
ARRAY数组指针
MOVSI,0;
P数组指针
MOVDI,0;
M数组指针
MOVCX,30
MOVAX,[BX];
从ARRAY数组取出一个数据
ANDAX,AL
JGEPLUS;
正数、零转PLUS
MINUS:
MOVM[DI],AX;
负数存入M数组
ADDDI,2
PLUS:
MOVP[SI],AX;
正数、零存入P数组
ADDSI,2
ADDBX,2
20.缓冲区BUFFER中存放有字符串,以0为结束标志。
编写程序,把字符串中的大写字母转换成小写字母。
BUFFERDB‘AStringforTest.’,0
LEABX,BUFFER;
BUFFER缓冲区指针
MOVAL,[BX];
从缓冲区取出一个字符
ANDAL,AL
JZQUIT;
为零,处理完成
CMPAL,‘A’
JBNEXT
CMPAL,‘Z’
ADDAL,‘a’-‘A’
MOV[BX],AL
INCBX
JMPONE
QUIT:
21.编写程序,从键盘上输入无符号字整数X,Y的值,进行X+Y的运算,然后按以下格式显示运算结果和运算后对应标志位的状态。
SUM=XXXX
ZF=Y,OF=Y,SF=Y,CF=Y
(其中X为十进制数字,Y为0或1)
CODE
MESS1DB0DH,0AH,‘Inputaunsignedintegerplease:
MESS2DB0DH,0AH,‘SUM=$’
MESS3DB0DH,0AH,‘ZF=’
ZFDB?
DB‘,OF=’
OFDB?
DB‘,SF=’
SFDB?
DB‘,CF=’
CFDB?
DB0DH,0AH,‘$’
START:
PUSHCS
POPDS
CALLREADDEC
MOVCX,AX;
输入X
LEADX,MESS1
CALLREADDEC;
输入Y
ADDAX,CX;
求和
PUSHF;
保留标志位状态
CALLWRITEDEC;
输出两个数的和
POPBX;
标志寄存器内容转存入BX
MOVAL,‘0’
TESTBX,1000000B;
测试ZF
JZSKP1
INCAL
MOVZF,AL
MOVAL,‘0’
TESTBX,100000000000B;
测试OF
JZSKP2
MOVOF,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 汇编语言程序设计 汇编语言 程序设计
![提示](https://static.bdocx.com/images/bang_tan.gif)