实验四分支和循环程序设计实验精Word格式.docx
- 文档编号:21473268
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:9
- 大小:59.63KB
实验四分支和循环程序设计实验精Word格式.docx
《实验四分支和循环程序设计实验精Word格式.docx》由会员分享,可在线阅读,更多相关《实验四分支和循环程序设计实验精Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
条件转移指令JXX条件转移指令可分为三大类:
1).简单条件转移指令指令。
根据单个标志位的状态判断转移条件。
令转移条件意义
CF
JCCF=1有进位/借位
JNCCF=0无进位/借位
ZF
JE/JZZF=1相等/等于0
JNE/JNZZF=0不相等/不等于0
SF
JSSF=1是负数
JNSSF=0是正数
OF
JOOF=1有溢出
JNOOF=0无溢出
PF
JP/JPEPF=1有偶数个1
JNP/JPOPF=0有奇数个1
2).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的
操作是A-B,其转移指令如下:
指令转移条件意义
JA/JNBECF=0ANDZF=0A>
B
JAE/JNBCF=0ORZF=1A>
=B
JB/JNAECF=1ANDZF=0A<
JBE/JNACF=1ORZF=1A<
3).带符号数条件转移指令。
JG/JNLESF=OFANDZF=0A>
JGE/JNLSF=OFORZF=1A>
JL/JNGESFOFANDZF=0A<
JLE/JNGSFOFORZF=1A<
四、实验内容与步骤
1、判断方程AX2+BX+C=0是否有实根。
若有实根,则将字节变量tag置1,否则置0。
假设A、B、C均为字节变量,数据范围为-128-127。
流程图:
m/
N
7
J
■
/
□
TAG刃
(2)程序代码:
DATASSEGMENT
A1DB?
B1DB?
C1DB?
TAGDB?
;
此处输入数据段代码DATASENDSCODESSEGMENT
ASSUMECS:
CODES,DS:
DATASSTART:
MOVAX,DATASMOVDS,AX
MOVAH,01H;
输入第一个数据INT21H
SUBAL,30H;
输入数据存入A,并转化为十进制数
MOVA1,AL
输入第二个数据INT21HSUBAL,30HMOVB1,AL
输入第三个数据INT21H
输入数据存入C,并转化为十进制数
MOVC1,AL
程序结果:
B*B-4AC=0,>
0<
0的三种情况
MOVAL,B1
MULAL;
计算B*B,结果存入AXMOVBX,AX;
B*B结果存入BX
MOVAL,A1IMULC1MOVCL,4
IMULCL;
计算4*A*C
CMPBX,AXJGET1MOVTAG,0JMPNEXT1
T1:
MOVTAG,1;
有根,将TAG赋值为1NEXT1:
ADDTAG,30H
MOVDL,TAG;
输出TAG的值MOVAH,02HINT21HMOVAH,4CHINT21H
CODESENDSENDSTART
2、编写一个程序,判别键盘上输入的字符;
若是1-9字符,则显示之;
若为A-Z
字符,显
tail
lAVh*>
E*^BMELhia
L521
Pre35anspkeytocontinue
示“C;
若为a-z字符,显示“c;
”若是回车字符vCR>(其ASCII码为0DH),则结束程序,若为其它字符则显示显示“R。
P广essanykeytocontinue
EC
P厂essanykeytocontinue
;
此处输入数据段代码结果
DATASENDS
CODESSEGMENT
DATAS
START:
MOVAX,DATAS
MOVDS,AX
MOVAH,01H
INT21H
CMPAL,'
1'
同1比较
JNBONE
ONE:
CMPAL,9;
同9比较
JLREAD
JGETOW
READ:
MOVDL,AL
MOVAH,02H
MOVAH,4CH
TOW:
CMPAL,'
A'
同A比较
、
YJ-石小J>
,特!
gII;
鬱堂
y
」J
Vi
MOVAIL4CH
IMJ1HFl'
I:
rri'
i也
'
^W<
MPAL;
r>
A*诜n、『r,IjK'
f
MflONE
JGEAA:
Z'
同Z比较
READ1:
M0VDL,CMOVAH,02HINT21HMOVAH,4CHINT21H
THREE:
a'
同a比较JGEB;
>
a则转到BB:
z'
同z比较JL
READ2JGEFOURREAD2:
MOVDL,'
c'
MOVAH,02HINT21HMOVAH,4CHJLREAD1JGETHREE
FOUR:
CMPAL,0DHJZCRJNZFIVECR:
MOVAH,4CHINT21H
FIVE:
R'
MOVAH,02H
INT21H;
此处输入代码据段代码MOVAH,4CHINT21HCODESENDSENDSTART
3、(大家再次编成实现实验一的题目,看是否可以优化程序?
)分类统计字数
组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和
Zero中,数组元素个数保存在其第一个字中。
使用Debug查看Positive、
Negative和Zero三个变量的数据。
流程图
0(不等Fo
用CXi己录数据个数⑸]记录数纽偏移地址
遐出循坏。
输出正数负数和零的个数
继续循环判断
程序代码
NUMDW30,4,16,-2,0,6,34,0,-4,3CNTEQU$-NUMPOSITIVEdb0Negativedb0
Zerodb0
LEASI,NUM;
SI取NUM的偏移地址MOVCX,CNT/2
CX存入数据个数,
JMPAZ:
INCZeroJMPAA:
ADDSI,2LOOPS
ADDPOSITIVE,30H;
把数字转换为相应的ASCII码
MOVDL,POSITIVEMOVAH,02HINT21H
ADDNegative,30HMOVDL,NegativeMOVAH,02H
ADDZero,30H
用于控制循环S:
CMPWORDPTR[Sl],0JGPJZZINCNegativeJMPAP:
INCPOSITIVE程序结果
MOVDL,Zero
MOVAH,4CHINT21HCODESENDSENDSTART
4、编写程序,在字符串变量STRING中存有一个以$为结尾的ASCII码字符串,要求计算
■A*bv-vr*A•斛ClAu塁
字符串的长度,并把它存入LENGTH单元中。
(要求用条件控制循环方法,并且字符串分数据类型是字节和字两种情况)流程图:
1|谢i
.}
iNCSMiiNcaZ賂魁续判越
程序代码:
STRING1DB100db?
DB100DUP⑺LENGTH1DB-1
STR2DBOah,'
Thelengthofthestringis'
'
$'
DATASENDS
MOVAH,0AHLEADX,STRING1INT21H;
输入字符串LEASI,STRING1+2MOV
CL,0S:
MOVAH,0
CMPBYTEPTR[SI],'
判断与$是否相等JZSTOP相等则跳去STOP
INCSI
DATAS,ES:
MOVAX,DATAS;
初始化ES,DXMOVDS,AX
INCCL
MOVLENGTH1,CL;
CL每次变化后保存
JMPS
STOP:
LEADX,STR2
MOVAH,09H
结果
ADDCL,30hMOVDL,CLMOVAH,02HINT21HMOVAH,4CHINT21HCODESENDSENDSTART
五、实验总结
通过这次实验掌握了输入输出基本操作,学习了单个字符的输入输出与字符串的输入输出,学习使用了数字与ASCII码之间的转换,进一步熟悉了许多的条件转移指令如JZ,JNZ,JGE,JL等.通过实验巩固了基础知识,加深了理解,非常有助于今后的学习.
“F如”匸十tAih*
hvIwBTlihdrillIv3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 分支 循环 程序设计