汇编语言实验指导书.doc
《汇编语言实验指导书.doc》由会员分享,可在线阅读,更多相关《汇编语言实验指导书.doc(56页珍藏版)》请在咨信网上搜索。
《汇编语言》实验指导书 目 录 实验一 Debug命令的使用………………………………3 实验二 基本汇编指令的使用 ……………………………7 实验三 汇编语言程序的调试与运营……………………10 实验四 系统功能调用程序的调试与运营………………15 实验五 分支程序设计……………………………………17 实验六 循环程序设计……………………………………20 实验七 子程序设计………………………………………23 实验八 高级汇编语言程序设计…………………………25 实验九 I/O程序设计 ……………………………………30 实验十 中断程序设计……………………………………33 实验十一 综合程序设计…………………………………38 实验一 Debug命令的使用 一、 知识点 1、 DEBUG简介 DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。在汇编语言程序调试中很常用。 DEBUG的提醒符是“-”,所有DEBUG调试命令军在此提醒符下输入。 DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。 DEBUG命令的使用注意问题: (1) 字母不分大小写 (2) 只使用十六进制数,但没有带后缀字母“H” (3) 命令假如不符合DEBUG的规则,则将以“error”提醒,并以“^”指示犯错位置。 (4) 每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。 2、 Debug的调入和退出 以WIN2023环境为例,点击“开始/运营…”,在“运营”对话框中输入命令:cmd,然后点击“拟定”,进入DOS命令行状态: C:\Documents and Settings\lfy> 然后输入命令: >Debug 进入Debug调试状态,出现Debug命令提醒府“-”,在此提醒符下可运营所需要的Debug命令了。 退出Debug的命令:Q 3、 Debug常用命令 (1) 汇编命令A,格式为: - A [地址] 功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。若不指定地址,则系统从默认的地址开始存放。按回车键退出汇编状态 应用:用于调试一条指令或几条指令组成的一个程序段。 (2) 显示和修改寄存器命令R,格式为: - R [寄存器名] 功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter健。若未指定寄存器,则默认为显示所有寄存器的内容。 应用:常用于通过寄存器的值查看指令的执行结果。 (3) 内存单元内容的命令E,格式为: - E 地址 [内容表] 功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。例如: -E 100 184E: 0100 89,78 其中,184E时数据段的段地址,0100是要修改的单元的偏移地址,89为该单元的值,78为程序员键入的值。结果0100单元的值由89H改变为78H。 应用:常用于在调试程序的过程中改变变量的初始值。 (4) 显示内存单元内容的命令D,格式为: - D [地址] 或 –D [范围] 功能:前者为显示从指定地址开始的一段存储单元的值;后者为显示指定范围内的存储单元的值。 例如: - D 200 ;显示从DS:200单元开始的各单元的值 - D 200 L10 ; 显示从DS:200单元开始的10个字节单元的值。 应用:常用于在调试过程中检查变量的值。 (5) 单步执行命令T,格式为: - T [=地址] 功能:从指定地址执行一条指令后停下来,显示寄存器内容和状态值。若未指定地址,则执行当前指令的下一条指令。 (6) 反汇编命令 U ,格式为: -U [地址] 或 -U 范围 功能:从制定地址开始,反汇编32个字节,或对指定范围内的主存内容进行反汇编。若没有指定地址,则接着上一个U命令的最后一个单元开始;若还没有使用过U命令,则从当前CS:IP开始。例如: -U 100,106 1343:0100 B80302 MOV AX,0203 1343:0103 BB0540 MOV BX,4005 1343:0106 01D8 ADD AX,BX 其中,屏幕最左边是主存逻辑地址(段地址:偏移地址),中间是该指令的机器代码,右边是相应指令的汇编语句格式。 (7) 运营命令G, 格式为: -G[ = 起始地址] [断点地址1,断点地址2,……,断点地址10] 功能:从等号后的起始地址开始运营,直到碰到断点或程序正常结束。例如: -G=100 106 则程序执行从100开始的程序段,到断点106停止。此时指令ADD AX,BX并未执行。 二、 实验目的及规定 1、编语言调试环境Debug的使用,重点掌握常用命令(A R D E T)的使用,其他指令在以后的学习中逐步掌握。 2、运用Debug命令,调试采用不同寻址方式的指令的执行结果,从实践中加深对寻址方式和MOV指令的理解。 三、 实验内容 1、 Debug程序的调入和退出 2、 Debug常用调试命令的使用 3、 MOV指令、XCHG指令、XLAT指令的调试 四、 实验环节 说明: 一方面输入以下程序段,然后单步执行并查看结果;改变寄存器AX的初始值后再运营,并查看结果。带下划线的部分为程序员输入的内容。 在DEBUG环境下,所有的数据均以十六进制输入和显示。 -A 137B:0100 mov ax,20 137B:0103 mov bx,ax 137B:0105 add ax,bx 137B:0107 mov [2023],ax 137B:010A -T=0100 AX=0020 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0103 NV UP EI PL NZ NA PO NC 137B:0103 89C3 MOV BX,AX -T=0103 AX=0020 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0105 NV UP EI PL NZ NA PO NC 137B:0105 01D8 ADD AX,BX -T AX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=0107 NV UP EI PL NZ NA PO NC 137B:0107 A30020 MOV [2023],AX DS:2023=000 -T AX=0040 BX=0020 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC 137B:010A 0000 ADD [BX+SI],AL DS:0020=FF -D 2023 L2 137B:2023 40 00 . ;修改0100处的指令mov ax,20 将AX的初始值改为10,并重新运营 -A 0100 137B:0100 mov ax, 10 137B:0103 ;最后一条指令执行的结果如下: AX=0020 BX=0010 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=137B ES=137B SS=137B CS=137B IP=010A NV UP EI PL NZ NA PO NC 137B:010A 0000 ADD [BX+SI],AL DS:0010=DF ;查看2023单元的值为0020H -D 2023 l2 137B:2023 20 00 . ;修改2023单元的值,由20h改为30h 并重新显示 -E 2023 137B:2023 20.30 -D 2023 l2 137B:2023 30 00 五、 拓展题 MOV、XCHG、XLAT指令的调试。 规定:用汇编命令A输入以下源程序段,用T命令单步执行,查看执行结果:寄存器或存储单元的值。。 提醒:在DEBUG环境下输入程序段时要省掉立即数后面的字符“H” 1、MOV指令的调试 程序段:MOV AL, 55H MOV AH, AL MOV BX, 1000H MOV BYTE PTR[BX], 66H MOV WORD PTR[BX+2], 77H MOV [BX+4], AX 2、 XCHG指令的调试 程序段:MOV AX, 0203H MOV BX, 0405H XCHG AX, BX XCHG BL, BH 3、 XLAT指令的调试 (1) 用E命令从DS:200地址开始输入数据10H、20H、30H、40H、50H (2) 用A命令输入以下程序段: MOV BX, 200 ;将数据的首地址送给BX MOV AL, 4用MOV ;将要查找的数据的偏移地址送给AL XLAT ;查看结果寄存器AL中的值,以及从DS:200开始的存储单元的值。 六、 实验报告 写出在DEBUG状态下编写、运营程序段的过程以及调试所中碰到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。 实验二 基本汇编指令的使用 一、知识点 1、 最常用的传送指令 MOV 可以将立即数/内存单元的值/寄存器的值送给寄存器,或将立即数/寄存器的值送给内存单元,但不允许两个内存单元之间直接传送。 2、 常用算术运算指令 ADD/ADC/INC、SUB/SBB/DEC/CMP/NEG 两个单字节/单字之间的加法用ADD指令、减法用SUB指令; 多字节/多字之间的加/减,除最低字节/最低字用ADD/SUB指令外,其余字节/字之间的加/减都要用包含进位/借位的ADC/SBB指令。 INC和DEC指令常用于修改计数器或修改指针,常用与循环解决一批数据。 CMP指令常用于比较两个数的关系,为下一步的条件转移做准备(后跟条件转移指令)。 3、 常用逻辑运算指令 AND/OR/NOT/XOR/TEST AND指令常用于给一个数据的某几位清零; OR指令常用于给一个数据的某几位置1; XOR指令常用于将一个数据某几位翻转; NOT指令常用于将一个数据所有位取反; TEST指令常用于测试一各数据的某一位或某几位的值,后跟条件转移指令。 4、 常用移位指令 SHL/SHR/SAR/ROL/ROR/RCL/RCR SHL和SAL功能相同,都是将操作数左移一位或几位,移出的空位补0; SHR和SAR功能不同,虽都是将操作数右移一位或几位,但左边移出的空位分别补0和1(SHR要补0,SAR补1)。 二、实验目的及规定 1、继续熟悉汇编语言调试环境Debug的使用,掌握常用调试命令。 2、用基本指令编写的程序段,并在Debug环境中调试,从实践中加深对基本汇编语言指令的执行过程的理解。 3、实验前要做好充足准备,涉及汇编程序段清单、调试环节、调试方法,以及对程序结果的分析等。 三、实验内容 1、 单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。 MOV AL, 89H ADD AL, AL ADD AL, 9DH CMP AL, 0BCH SUB AL,AL DEC AL INC AL 2、 编写程序段,分别完毕11223344H与55667788H的加/减计算,并调试、观测结果。 3、 单步调试以下程序段,给出每条指令执行后AL的值,以及CF、ZF、SF、OF的状态。 MOV AX, 1470H MOV BX, 3060H AND AX, BX OR AX, BX XOR AX, AX NOT AX TEST AX,0F0F0H 4、 设(AX)=1234H,写出执行下列每条指令后AX寄存器的内容,并观测CF的变化。 SHL AX, 1 MOV CL, 2 SHL AX, CL SHR AX, 1 ROL AX, 1 MOV CL, 3 ROL AX, CL RCR AX,1 MOV CL, 2 RCR AX, CL 四、实验环节 1、运用DEBUG的A命令输入待调试的程序段。 2、运用单步执行命令T逐条执行指令,观测寄存器及相关状态位的值。 以实验内容2中的加法为例,实现加法运算: 注:下划线部分为程序员输入的内容。 (1)-A 1373:0100 MOV AX, 3344 ;DX.AX<- 11223344H 1373:0103 MOV DX, 1122 1373:0106 ADD AX, 7788 ; DX.AX+55667788H->DX.AX 1373:0109 ADC DX, 5566 1373:010D -T=100 AX=3344 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0103 NV UP EI PL NZ NA PO NC 1373:0103 BA2211 MOV DX,1122 -T AX=3344 BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0106 NV UP EI PL NZ NA PO NC 1373:0106 058877 ADD AX,7788 -T AX=AACC BX=0000 CX=0000 DX=1122 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=0109 OV UP EI NG NZ NA PE NC 1373:0109 81D26655 ADC DX,5566 -T AX=AACC BX=0000 CX=0000 DX=6688 SP=FFEE BP=0000 SI=0000 DI=0000 DS=1373 ES=1373 SS=1373 CS=1373 IP=010D NV UP EI PL NZ NA PE NC 1373:010D 0000 ADD [BX+SI],AL DS: ;结果:DX.AX=6688AACCH 五、拓展题: 1、 编写程序段:将DX.AX中的双字右移一位。 2、 编写程序段:将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。设AX中本来的值为0AAH。 3、 设AX=2AH,BX=30H,编写程序段计算:AX/BX,并将结果送BX.CX。 六、实验报告: 1、写出源程序段清单、程序说明、执行结果。 2、调试说明。涉及上机调试的情况、上机调试环节、调试所碰到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。 实验三 汇编语言程序的调试与运营 一. 知识点 1、 汇编语言源程序的格式 完整的汇编语言源程序由段组成,即代码段、数据段、附加段和堆栈段。其中,需要独立运营的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。 例如,输出一个字符串的源程序: .model small ;定义程序的存储模式(小型程序一般采用小模式) .stack ;定义堆栈段 .data ;定义数据段 string db ‘An example.’,0ah,0dh,’$’ ;在数据段中定义要显示的字符串 .code ;定义代码段 .startup ;程序的起始点 lea dx, string ;将字符串的起始地址送dx,即设立入口参数 mov ah, 09h ;设立输出字符串的功能调用号 int 21h ; 功能调用:显示 .exit 0 ;程序结束点,返回dos end ;汇编结束 注:这是简化段定义的程序格式 2、 汇编语言程序的开发过程 一般环节:编辑、编译、连接、调试运营 (1) 源程序的编辑 源程序文献可以运用任一文本编辑器进行编辑,通常我们用“记事本”。 源程序文献保存时,一般以 .asm为文献的后缀名。 具体实现:如图 在win2023环境下,在“另存为”界面中输入文献全名(example.asm),并且将“保存类型“选择为“所有文献”。 也可以使用.txt后缀名,但是在汇编时要写源文献的全名,否则系统默认的为.asm。 (2) 源程序的汇编、连接 汇编是将源程序翻译成由机器代码组成的目的模块文献的过程。连接程序将一个或多个目的文献和库文献合成一个可执行文献。 MASM6.X提供的ML.EXE可以实现: 先汇编,若没有错误则自动调用LINK.EXE连接程序进行编译;若有错,则提醒错误信息,可运用列表文献查看错误所在位置,并改正错误,重新汇编和连接。 例如,设上面的例题程序文献为EXAMPLE.ASM,并且该文献与ML.EXE等文献都在同一目录(设该目录为当前目录)下,则汇编、连接的命令为: >ML EXAMPLE.ASM 运营结果见实验环节2。产生:EXAMPLE.OBJ和 EXAMPLE.EXE文献 特别说明: ML允许汇编和连接多个程序形成一个可执行文献,并且还可以带参数,格式: ML [/参数选项] 文献列表 常用参数选项有: /c ——只汇编源程序,不进行自动连接(注意用小写字母c) /Fl 文献名——创建一个汇编列表文献(扩展名LST),用于查找错误。 Sg ——在省城的列表文献中,列出由汇编程序产生的指令 例如:若将字符串的引号改为中文的“‘”后重新用下面命令汇编连接,则结果见实验环节3。 >ML /Fl EXAMPLE.ASM (3) 可执行程序的调试 在操作系统提醒符下直接输入柯执行文献名即可运营: >EXAMPLE 当出现运营错误时,通常用DEBUG进行调试: >DEBUG EXAMPLE.EXE 然后采用U命令进行反汇编,用T或G命令运营并观测,找犯错误所在。 二.实验目的及规定 1.掌握数据定义、段定义的方法 2.熟悉在PC机上编辑、汇编、连接、调试和运营汇编语言程序的过程。 3、熟悉常见Jcc指令、loop指令的使用。 三.实验内容 编程实现: 1、 求数组array中的20个字元素的和,并存入变量total中。其中,数组元素在定义数组时以初值的形式给出。 2、 给DX送一个初值,然后判断:若DX的高4位全为0,则使AX=0;否则使AX=-1。 3、 定义一个字符串string,包含若干字符并且以’$’结尾,用程序记录字符的个数。 四、实验环节 以实验内容1为例,介绍实验环节: 1、 编辑源程序:在记事本中输入如下程序,并存在E:\MASM6\BIN\EXAM1.ASM中。 2、 汇编、编译: 情况1:没有错误 >ml example.asm Object Modules [.obj]: example.obj Run File [example.exe]: "example.exe" List File [nul.map]: NUL Libraries [.lib]: Definitions File [nul.def]: 产生:EXAMPLE.OBJ和 EXAMPLE.EXE文献 情况2:源程序中有错误,比如将字符串的引号改为中文的“‘”后重新用下面命令汇编连接。 >ML /Fl EXAMPLE.ASM Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993. All rights reserved. Assembling: example.asm example.asm(5): error A2044: invalid character in file example.asm(8): error A2023: undefined symbol : string 则给出2条错误信息提醒,并产生错误列表文献 EXAMPLE.LST 在记事本中打开该文献,内容如下: ;输出一个字符串的源程序: .model small .stack .data string db ’An example.',0ah,0dh,'$' example.asm(5): error A2044: invalid character in file .code ;定义代码段 .startup ;程序的起始点 lea dx, string example.asm(8): error A2023: undefined symbol : string mov ah, 09h int 21h ; 功能调用:显示 .exit 0 ;程序结束点,返回dos end ;汇编结束 特别提醒: 两处错误明显的标在源程序中。 事实上,只有一处错误,后面的错误是由于前面的错误引起的,所以改正错误时要从前往后逐个修改,并且每改完一处就重新存盘、汇编,以提高调试效率。 3、 调试: C:\masm>debug example.exe -u ;反汇编 1395:0000 BA9713 MOV DX,1397 1395:0003 8EDA MOV DS,DX 1395:0005 8CD3 MOV BX,SS 1395:0007 2BDA SUB BX,DX 1395:0009 D1E3 SHL BX,1 1395:000B D1E3 SHL BX,1 1395:000D D1E3 SHL BX,1 1395:000F D1E3 SHL BX,1 1395:0011 FA CLI 1395:0012 8ED2 MOV SS,DX 1395:0014 03E3 ADD SP,BX 1395:0016 FB STI 1395:0017 8D160400 LEA DX,[0004] ;源程序中的第一条指令 1395:001B B409 MOV AH,09 1395:001D CD21 INT 21 1395:001F B8004C MOV AX,4C00 ;相应.exit 0 指令 -u 1395:0022 CD21 INT 21 …… 此时可用debug命令调试该程序了。 4、 关于变量名相应的偏移地址 源程序的第一条指令是:lea dx, string 汇编后相应的指令是:LEA DX,[0004] 因此,可看出变量string所相应的偏移地址是:0004h 假如要查看从string开始的字符串的内容,可用如下命令: -D 04 Lc 即查看从04H开始的12个单元的内容。 五、拓展题 1、有两个64位数值,按“小端方式“存放在两个缓冲区buffer1和buffer2种,计算buffer1-buffer2,并将结果存放到变量result中。 2、将DX.AX中的双字右移4位。 六、实验报告 1、写出源程序清单、程序说明、执行结果。 2、调试说明。涉及上机调试的情况、上机调试环节、调试所碰到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。 实验四 系统功能调用程序的调试与运营 一、知识点 1、常用字符/字符串输入/出系统功能调用 (1) 输出一个字符:DOS功能调用INT 21H的02号功能调用 使用格式: MOV AH, 02H ;设立功能调用号 AH<-02H MOV DL, ‘*’ ;设立入口参数DL<-待显示的字符的ASCII码 INT 21H ;DOS功能调用:显示 (2) 输入一个字符:DOS功能调用INT 21H的02号功能调用 使用格式: MOV AH, 01H ; 设立功能调用号 AH<-01H INT 21H ;DOS功能调用:显示 出口参数:AL=字符的ASCII码 说明:执行此功能时,等待用户按键,然后读取按键值。 (3) 输出一个字符串:DOS功能调用INT 21H的09号功能调用 使用格式: MOV AH, 09H ;设立功能调用号 AH<-09H LEA DX, STRING ;设立入口参数DX<-待显示的字符串的首地址 INT 21H ;DOS功能调用:显示 说明:字符串必须以’$’结束; 入口参数DS:DX=待显示的字符串的首地址(段地址:偏移地址) (4) 输入一个字符串:DOS功能调用INT 21H的0A号功能调用,将键盘输入的字符串送入指定的缓冲区。 入口参数DS:DX=待显示的字符串的首地址(段地址:偏移地址) 使用该功能前,一方面要定义接受字符串的缓冲区,格式: BUFFER DB 81 ;定义缓冲区,以及也许输入的最大字符数 DB 0 ;该字节用于存放实际输入的字符的个数 DB 81 DUP(0) ;该区域用于存放输入的字符串,初值设为0 使用格式: MOV AH, 0AH ; 设立功能调用号 AH<-01H MOV DX, SEG BUFFER MOV DS, DX ;缓冲区的段地址àDS LEA DX, BUFFER ; 缓冲区的偏移地址àDX INT 21H ;DOS功能调用:输入字符串 二、实验目的及规定: 1、掌握接受键盘数据的方法,掌握向显示器输出数据的方法。并了解数据显示时,须转为ASCII码的原理。 2、 握DOS功能调用的编程方法。 3、 实验前要做好充足准备,涉及汇编程序清单、调试环节、调试方法,以及对程序结果的分析等。 三、实验内容: 编程实现: 1、 从键盘输入一个小写字母,转换成大写字母,然后换行输出。 2、 从键盘输入的一个字符串(以回车结束),并将字符串末尾加上结束标志’$’,然后输出该字符串。 3、 从键盘输入的一个字符串(不超过10个字符,以回车结束,),将字符串的长度送入寄存器AL,然后输出字符串的长度。 四、实验环节: 具体编程、调试环节同实验三 编程提醒: 1、 换行的实现:输出字符0AH、0DH 2、 在字符串末尾加上结束标志’$’的实现: 若接受字符串的缓冲区为buffer,则先取出实际输入的字符: mov si, buffer+1 然后将字符串末尾加上’$’:mov [buffer+si+2], ‘$’,其中buffer+2为字符串的首地址 3、 输出字符串长度的实现:一方面取出实际输入的字符数,然后将该数字转换成相应的ASCII码,最后输出该数字相应的字符。 五、思考题: 程序中的原始数据是以如何的形式存放在数据区中的?请用DEBUG调试程序观测并分析。 六.实验报告: 1、程序说明。说明程序的功能、结构。 2、调试说明。涉及上机调试的情况、上机调试环节、调试所碰到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。 3、画出程序框图。 4、写出源程序清单和执行结果。 5、回答思考题。 实验五 分支程序设计 一、知识点 1、 控制转移类指令 无条件转移指令JMP 、条件转移指令Jcc 2、 单分支结构 注意分支条件的选择:当条件满足时,直接转到分支的下一条指令;否则,执行单分支语句段。例如,求AX中数据的绝对值: CMP AX, 0 JGE NONEG NEG AX NONEG: MOV RESULT, AX 思考:假如条件改为 JL,以上分支程序段如何改写?是比较程序段的复杂度? 3、 双分支结构 双分支结构中条件的选择任意,但特别注意: 当分支语句段1结束后,一定要用JMP指令跳过度支语句段2,即跳到分支结束的位置。例如,判断AX中的数据的符号,若为非负数,则0àsign;否则,-1àsign。 CMP AX, 0 JGE NONEG MOV SIGN, -1 JMP END0 NONEG: MOV SIGN, 0 END0: …… 4、 分支结构程序测试用例的设计 基本准则:测试用例要满足可以使每个分支都能执行一次,特别注意边界数据的测试。换句话说,就是一方面分析每个分支条件,找出使条件成立、不成立时的数据取值范围,然后从每个范围中选一个数据,形成一个测试用例;此外,边界数据作为单独一个测试用例。 举例说明: (1)单分支/双分支结构的测试:比如上面“判断AX中的数据的符号”程序段,需要设计三个测试用例,即分AX>0、 AX<0、 AX=0三种情况,分别拟定一个数据(假设AX分别取5、-2、0三个数据)。其中,0就是一个介于条件成立与不成立之间的边界数据。 具体操作:在DEBUG环境下,用R命令改变AX的值,调试,分析程序流程和结果。 (2)多分支结构的测试:比如,实验内容第3题的多分支结构的测试:则至少要对每一种情况设计一个测试用例, 即1~9中的一个数、a~z中的一个字符、A~Z中的一个字符、回车符、其他字符, 然后设计边界测试用例1、9、A、Z、a、z,共11个测试数据。 具体操作:当测试数据需要从键盘输入时,可在在MS-DOS环境下逐个使用测试数据运营;当测试数据是程序中某个变量或寄存器的值时,可在DEBUG环境下,运用R或E命令用测试数据修改寄存器或变量的值,然后运营。 二、 实验目的及规定 1、掌握分支程序的结构。 2、掌握分支程序的设计、调试方法。 3、实验前要做好充足准备,涉及流程图、汇编程序清单、调试环节、调试方法,以及对程序结果的分析等。 4、编程时先画流程图,培养结构化程序设计的思想;调试前根据程序结构设计测试用例,逐步掌握程序测试方法。 三、 实验内容 1、 编写一个程序,显示AL寄存器中的两位十六进制数。 2、 编写一个程序,把变量bufX和bufY中较大者存入bufZ;若两者相等,则把其中之一存入bufZ中。假设变量中存放的是8位无符号数。 3、 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。 四、 实验环节 1、用记事本编写.ASM源程序。 2、对源程序进行汇编及连接,产生.EXE文献、.LST文献。 3、在DEBUG环境下调试: (1)用DEBUG命令U反汇编,用T单步执行,查看程序的流程及每一步的执行结果。 (2)用R命令修改AL寄存器的内容,重新运营第一题的程序,分析结果。 (3)用E命令修改变量bufX和bufY的值,重新单步执行第二题的程序,分析程序的流程及运营结果。 (4)反复调试运营第三题的程序,分别输入:1~9中的一个数、a~z中的一个- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 指导书
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文