北京理工大学汇编第四次分支和循环程序设计实验报告031230.docx
- 文档编号:681134
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:18
- 大小:165.64KB
北京理工大学汇编第四次分支和循环程序设计实验报告031230.docx
《北京理工大学汇编第四次分支和循环程序设计实验报告031230.docx》由会员分享,可在线阅读,更多相关《北京理工大学汇编第四次分支和循环程序设计实验报告031230.docx(18页珍藏版)》请在冰豆网上搜索。
北京理工大学汇编第四次分支和循环程序设计实验报告031230
汇编第四次(分支和循环程序设计实验)报告
一、实验要求和目的
1.熟悉汇编语言程序设计结构;
2.熟悉汇编语言分支程序基本指令的使用方法;
3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;
4.了解汇编语言循环程序设计的基本流程;
5.熟悉汇编语言循环基本指令的使用方法;
6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境
1、硬件环境:
计算机系统windows;
2、软件环境:
装有MASMDEBUGLINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。
1.无条件转移指令JMP
无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、
段间转移。
2.条件转移指令JXX
条件转移指令可分为三大类:
1).简单条件转移指令。
根据单个标志位的状态判断转移条件。
下表表
示条件转移指令标志位的状态:
标志位
指令
转移条件
意义
CF
JC
CF=1
有进位/借位
JNC
CF=0
无进位/借位
ZF
JE/JZ
ZF=1
相等/等于0
JNE/JNZ
ZF=0
不相等/不等于0
SF
JS
SF=1
是负数
JNS
SF=0
是正数
OF
JO
OF=1
有溢出
JNO
OF=0
无溢出
PF
JP/JPE
PF=1
有偶数个1
JNP/JPO
PF=0
有奇数个1
2).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进
行的的操作是A-B,其转移指令如下:
指令
转移条件
意义
JA/JNBE
CF=0ANDZF=0
A>B
JAE/JNB
CF=0ORZF=1
A>=B
JB/JNAE
CF=1ANDZF=0
A
JBE/JNA
CF=1ORZF=1
A<=B
3)带符号数条件转移指令。
指令
转移条件
意义
JG/JNLE
SF=OFANDZF=0
A>B
JGE/JNL
SF=OFORZF=1
A>=B
JL/JNGE
SFOFANDZF=0
A
JLE/JNG
SFOFORZF=1
A<=B
在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。
循环结构的组成及其设计方法的知识要点有:
1、循环程序的基本结构通常由3部分组成
1)初始化部分
建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.
2)循环体
循环体是循环程序的主体,是程序中重复执行的程序段•它是由循环工作部分、修改部分、和循环控制部分。
1循环工作部分:
完成程序功能的主要程序段,用于解决程序的实际任务;
2修改部分:
对循环参数进行修改,并为下一次循环做准备;
3循环控制部分:
判断循环结束条件是否满足。
通常判断循环结束方法:
用计数控制循环;循环是否进行了预定的次数。
用条件控制循环。
循环终止条件是否满足。
3)结束处理处理部分
主要是对循环的结果进行处理,比如现实提示信息等,很多时候没有此部分程序。
2、循环控制指令:
LOO赫号CX=CX-1;若CX=0则循环cx=o
LOOPNZ/LOOPNE号CX=CX-1若CX=0且ZF=0,则循环CX=0
或ZF=0
LOOPZ/LOOpg号CX=CX-1若CX=0且ZF=1,则循环CX=0或
ZF=1
JCXZ标号仅测试(CX)=0?
若等于0,则转移到目标地址,否
则顺序执行
3、循环控制可以分为:
计数循环和条件循环。
作为计数循环,一般是指循环次数是已知的情况,在程序设计的的循环时,先应将循环次数送入计数器CX中进行计数,在循环体中使用LOOP等循环指令。
当然,也可以通过其他方式来进行,如ex・cx-1,jnz等结合实现。
四、实验内容与步骤
1、判断方程AX2+BX+C=(是否有实根。
若有实根,则将字节变量tag置1,
否则置0。
假设AB、C匀为字节变量,数据范围为-128~127。
流程图如下:
(1)代码
datasegment
Adb5
Bdb10
Cdb5
tagdb0
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
moval,B
mulal
movcx,ax
moval,A
mulC
movbx,ax
movax,4
mulbx
sbbax,cx
cmpax,0
jlyep
jmpnope
yep:
moval,1
movtag,alnope:
movah,4ch
int21h
codeends
endstart
(2)主要操作
初始值a=5,b=10,c=5显然有实根
使用-u、-g命令查看结果,可知确实有tag=al=1
更改a=1,b=1,c=1,再次查看知al未赋值“1”,故tag仍为初始值“0”
ICAb:
0D1F兀庇
JL
ahert(JtKJ
LCAb:
«*IlEbfcfe
jrw
iiherttJUZO
LCAb:
BU01
ruu
AL,Ulh
ICAb:
ttKbAZfcJdOO
HJU
LtjetaJ.flL
l£Ab:
磁HB44C
MUU
AH沁口i
ICAb:
0tKACDZ1
1NT
ICAb:
UGKCC1)Z1
1MI
ZUi
ltAb:
zioe
AND
LBX+aU.AX
ICAb:
ytKJOtW0G
ADD
LBX+iilJ,AL
lCAb:
«3l3206GG
ADD
LBX+*ilJ,AL
lCAb:
(KW40(J0G
ADD
LBX+iilJ,AL
ICAb:
OtUb0W3G
ADD
1BX+SIJ,AL
-g
LX=6e01
cx=eeei
nx=t«0e
SP=e0GQ«K=DG00
Sl=tBG0
1)1=0000
D^=lCAh^=lCUb
Sli=lCA4
Oi=lCA&
IP=GtJ2HNUUPDI
CLH2HA
PENC
IXHb:
磁tJB44C
MUU
AH,4Ch
JmstructionBreakpoint
H
曲色幻bx=«»i
g磁1
略旳畑
SF=C)W0珊老妙
31=0900
DI=0OW
D浒1X5E3=1C95
SS=1C^4
CS=1CA&
1件磁2HUUP1H
PLMS舶
PENC
lCftb:
救HCUZl
IHT
;tndProgram
Cpuspeed:
.1=11
TraceInterrupt一t一
-q退出
2、编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z字符,显示“C”若为a-z字符,显示“c”;若是回车字符<CR>其ASCII码为ODH),则结束程序,若为其它字符则显示显示“R'。
流程图如下:
(1)代码
DATASEGMENT
CHARDB
DATAENDS
STACKSEGMENT
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1H
INT21H
CMPAL,0DH
JEEND1
CMPAL,39H
JBEL1
JMPL2
L1:
CMPAL,31H
JAES1
JMPEND0
L2:
CMPAL,41H
JBEND0
CMPAL,59H
JBEEND2
JMPL3
L3:
CMPAL,61H
JBEND0
CMPAL,79H
JBEEND3
JMPEND0
S1:
MOVDL,AL
MOVAH,02
INT21H
JMPEND1
END0:
MOVDL,52H
MOVAH,02
INT21H
JMPEND1
END2:
MOVDL,43H
MOVAH,02H
INT21H
JMPEND1
END3:
MOVDL,63H
MOVAH,02H
INT21H
JMPEND1
END1:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
(2)主要操作
分别输入9dG'以及回车,使用-t、-g指令查看结果如下,满足要
DOSBoxO./4d匚卩uspeed:
3OUU匚ycfes,Irameskip0,Program:
3、分类统计字数组data中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero中,数组元素个数保存在其第一个字中使用Debug查看Positive、Negative和Zero三个变量的数据。
流程图如下:
1)代码datasegment
bufdb9,5,4,2,0,0,0,-1,-2,-3
positivedw0
negativedw0
zerodw0
dataendscodesegment
assumecs:
code,ds:
data
start:
movax,datamovds,axmovsi,0movcx,10
s:
cmpcx,0jedonedeccx
cmpbyteptr[si],0
jes1
jgs2
jls3s1:
inczero
incsi
jmps
s2:
incpositive
incsi
jmps
s3:
incnegative
incsi
jmps
done:
movax,positivemovbx,zeromovdx,negativemovah,4ch
int21h
codeends
endstart
(2)主要操作
结果应为四
易知,按输入数据bufdb9,5,4,2,0,0,0,-1,-2,-3
个正数,3个零,三个负数
即ax=4、bx=3、dx=3,使用-u、-g指令查看寄存器结果如下图:
噩DOSBox0.74,Cpuspeed:
3000tyc.les,Farneskp0Program:
D.
..0r'I
lcnt^GOir
EBEA
JIT
ShortG0OB
icnt:
Gcei
FFGtoneo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京理工大学 汇编 第四 分支 循环 程序设计 实验 报告 031230