《实验五顺序、分支结构程序设计.ppt》由会员分享,可在线阅读,更多相关《实验五顺序、分支结构程序设计.ppt(10页珍藏版)》请在三一办公上搜索。
1、实验五 顺序、分支结构程序设计,实验目的1掌握顺序、分支结构程序设计的基本方法。_ 2掌握无条件转移指令和条件转移指令的使用。_ 3熟悉汇编语言程序设计的基本结构和常用指令的使用。_ 4进一步熟悉汇编语言的上机过程和DEBUG_的使用。实验学时 2 学时 实验器材 PC 微机及软件。实验原理 1顺序结构 顺序结构的程序,指令逐条依次被执行,指令指针 IP内容为线性增加。实现这种结构的指令有传送类、运算类和位移类。因此,顺序结构的程序只能完成简单的功能,例如,计算表达式的值、顺序查表等。,2分支结构 程序中出现二中选一的分支称为二路分支,三中选一的分支称为三路分支,还有四中选一,N 中选一称为多
2、路分支。实现分支的要素有两点:(1)使用能影响状态标志的指令,如算术逻辑运算类指令、移位指令和位测试指令等,将状态标志设置为能正确反映条件成立与否的状态。(2)使用条件转移类指令对状态位进行测试判断,确定程序如何转移,形成分支。实验内容与步骤 1 已知字节变量 X,Y 存放于 VARX,VARY 存储单元中,利用公式求 Z的值,并将结果存放于 RESULT 存储单元中。公式:Z=(X+Y)*8-X)/2。参考程序如下:(程序名:SY5-1.ASM)data SEGMENT varx DW 0006h vary DW 0007h result DW?data ENDS code SEGMENT
3、ASSUME CS:code,DS:data start:MOV AX,data MOV DS,AX,MOV AX,varx;AX-XADD AX,vary;AX-X+Y MOV CL,3 SAL AX,CL;AX-(X+Y)*8 SUB AX,varx;DL-(X+Y)*8-X SAR AX,1;DL-(X+Y)*8-X)/2 MOV result,AX MOV AH,4ch INT 21h;退出程序 code ENDS END start(1)输入程序并检查无误,经汇编、连接后产生正确的可执行文件 SY5-1.EXE。(2)执行可执行文件,可以看到执行正常,但是没有任何输出,可以使用 DE
4、BUG来调试。,(3)用 DEBUG 的 U CS:0000 查看 MOV AX,XXXX(DATA)语句,即得到数据段段地址 DS=XXXX。(4)单步运行以上程序到最后一条指令,计算出了(X+Y)*8-X)/2 的内容(0031H),调试过如下:C:DEBUG SY5-1.EXE 一_U_;反汇编_ 13F9:0000_B8F813_MOV_AX,13F8_ 13F9:0003_8ED8_MOV_DS,AX_ 13F9:0005_8B1E0000_MOV_BX,0000_ 13F9:0009_031E0200_ADD_BX,0002_ 13F9:000D_B103_MOV_CL,03_ 1
5、3F9:000F_D3E3_SHL_BX,CL_ 13F9:0011_2B1E0000_SUB_BX,0000_ 13F9:0015_D1FB_SAR_BX,1_ 13F9:0017_891E0400_MOV_0004,BX_ 13F9:001B_B44C_MOV_AH,4C_ 13F9:001D_CD21_INT_21_;源程序结束 一_R_ AX=0000 BX=0000 CX=002F DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=13E8 ES=13E8 SS=13F8 CS=13F9 IP=0000 NV UP EI PL NZ NA PO N
6、C 13F9:0000 DBF813MOV AX,13F8 一_T_,AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13E8_ES=13E8_SS=13F8_CS=13F9_IP=0003_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0003_8ED8_ MOV_DS,AX_ 一_T_ AX=13F8_BX=0000_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0000 DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0005_NV_U
7、P_EI_PL_NZNAPO_NC_ 13F9:0005_8B1E0000_MOV_BX,0000_DS:0000=0006_ 一_T_ AX=13F8_BX=0006_CX=002FDX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0009_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0009_031E0200_ADD_BX,0002_DS:0002=0007_ 一_T_ AX=13F8_BX=000D_CX=002F_DX=0000_SP=0000_BP=0000_SI=0000
8、_DI=0000_DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=000D_NV_UP_EI_PL_NZNAPO_NC_ 13F9:000D_B103_MOV_CL,03_ 一_T_,AX=13F8_BX=000D_CX=0003_DX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=000F_NV_UP_EI_PL_NZNAPO_NC_ 13F9:000F_D3E3_SHL_BX,CL_ 一_T_ AX=13F8_BX=0068_CX=0003DX=0000_SP=0000_B
9、P=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0011_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0011_2B1E0000_SUB_BX,0000_ 一_T_ AX=13F8_BX=0062_CX=0003DX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0015_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0015_D1FB_SAR_BX,1_ 一_T_ AX=13F8_BX=0031_CX=00
10、03DX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=0017_NV_UP_EI_PL_NZNAPO_NC_ 13F9:0017_891E0400_MOV_0004,BX_DS:0004=0000_ 一_T_ AX=13F8_BX=0031_CX=0003DX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=001B_NV_UP_EI_PL_NZNAPO_NC_ 13F9:001B_B44C_MOV_
11、AH,4C_ 一_T_,AX=4CFB_BX=0031_CX=0003_DX=0000_SP=0000_BP=0000_SI=0000_DI=0000_ DS=13F8_ES=13E8SS=13F8_CS=13F9_IP=001D_NV_UP_EI_PL_NZNAPO_NC_ 13F9:001D_CD21_INT_21_ 一 D 0000 0005;数据段三个字内容分别为 X,Y,Z 13F8:0000 06 00 07 00 31 00_.1._ 2假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断:每个数大于_0,等于_0,还是小于_0;并输出其判断结果。,即:_,1_当_
12、x0_ _0_当_x=0_-1_当_x0_,(1)编程提示:首先将原始数据装入起始地址为_XX_的字节存储单元中。将判断结果以字符串的形式存放在数据区中,以便在显示输出时调用。其中判断部分可采用_CMP_指令,得到一个分支结构,分别输出“y=0”,_“y=1”,_“y=-1”。程序中存在一个循环结构,循环_6_次,调用6_次分支结构后结束。参考程序如下:(程序名:SY5-2.ASM)data,SEGMENTx DB 5,-4,0,3,100,-51 A1DB 1,13,10,$A2 DB 0,13,10,$A3 DB-1,13,10,$data ENDS code SEGMENT main P
13、ROC FAR ASSUME CS:code,DS:data start:PUSHDS MOVAX,0 PUSHAX MOVAX,data MOVDS,AX LEASI,x MOVCX,06h again:MOVAL,SI,CMPAL,0 JGE LOOP1LEADX,A3 JMP NEXT LOOP1:JE LOOP2 LEADX,A1 JMP NEXT LOOP2:LEADX,A2 NEXT:MOVAH,09h INT 21hINCSI DECCX JNE again RET mainENDP code ENDS END start,(2)输入程序并检查无误、经汇编、连接后产生正确的可执行文件 SY5-2.EXE。(3)用 DEBUG 的 U 命令查看 MOV AX,XXXX(DATA)语句,即得到数据段基址 DS:XXXX。(4)用 G 命令运行以上程序,记录显示结果,对照数据比较结果是否正确。实验注意事项 1程序 2的调试方法与程序 1 相同。2程序2 中 CMP AL,0 指令可用 SUB AL,AL或 AND AL,AL 或OR AL,AL替换,效果是一样的。实验与思考 1编写一个程序,在屏幕上输出一个大写字母”A”。2编写程序,将_BX与_DX中较大的一个无符号数放到_AX_中。,
链接地址:https://www.31ppt.com/p-6565769.html