《汇编实验一(共5页).doc》由会员分享,可在线阅读,更多相关《汇编实验一(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上专心-专注-专业实验一实验一 顺序与分支程序设计顺序与分支程序设计一 、实验目的1) 掌握顺序程序设计方法。2) 掌握分支程序的结构及分支程序的设计,调试方法。2) 学习数据传送及算术和逻辑运算指令的用法。3) 熟悉在 PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程。二、实验内容1) 有一字变量 BUF1 是以原码表示的有符号数, 要求将其转换为反码和补码, 分别存入 BUF2和 BUF3 单元,并在屏幕上显示出来。三、实验设备PC 机一台四、实验准备1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。2) 画出流程图。3) 写出源程序。4) 对程
2、序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。五、实验步骤1) 输入源程序。2) 汇编、连接程序,生成 .EXE 文件,执行文件,检查结果。六、实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。DATASEGMENT;数据段BUF1DW9348H;给 BUF1 赋值BUF2DW4 DUP(0),0AH,0DH,$;定义字型变量,精选优质文档-倾情为你奉上专心-专注-专业BUF3DW4 DUP(0),$;同上DATAENDS; 数据段结束CODESEGMENT;代码段ASSUMECS:CODE,DS:DATA;代码段寄存器 CS 与 CODE 关联,
3、数据段寄存器 DS 与DATA 关联BEGIN:MOVAX,DATAMOVDS,AX;将数据段的基地址装入数据段寄存器 DSMOVAX,BUF1;将字型变量 BUF1 的值装入 AX 寄存器ADDAX,0;AX 寄存器的数据加上 0,以便进行转移测试JSNEXT;判断 AX 的正负,若为负则转到 NEXT,为正往下顺序执行。MOVBUF2,AX;为正,反码与原码一样MOVBUF3,AX;为正,补码与原码一样JMPEEENEXT:ANDAX,7FFFH;将符号位变为 0NOTAX;求反码MOVBUF2,AX;将 BUF1 的反码装入 BUF2INCAX;求补码MOVBUF3,AX; 将 BUF1
4、 的反码装入 BUF3EEE:MOVCX,0004H;将 0004H 装入 CX 计数器寄存器中MOVDI,OFFSET BUF2;将 DI 指向变量 BUF2 开始的存储单元MOVDX,DI;将 DI 所指的数据装入 DX 寄存器中ADDDI,03;将 DI 指针下移三个字BBB:MOVAX,DX;将 DX 中的内容装入 AX 寄存器中精选优质文档-倾情为你奉上专心-专注-专业ANDAX,000FH;使 BUF2 的低四位不变,其余变为 0CMPAL,0AH;比较AL与 0AH 的大小, 以便能正确转换为 0-9 的 ASCII值JBQQQ;若AL0AH,所以AL+07H,使得 AL 能转换
5、成相应的数字的 ASCII 值QQQ:ADDAL,30H;将AL转化成相应的数字的 ASCII 值MOVDI,AL;将 AL 中的内容装入以 DS 中的内容为段基地址,以 DI 的内容为偏移地址的存储单元DECDI;DI=DI-1,即将 DI 指向前一个存储单元PUSHCX; 保存 CX 寄存器的内容MOVCL,04H;给 CL 寄存器赋值为 04HSHRDX,CL;将DX逻辑右移四位POPCX;恢复 CX 寄存器的内容LOOPBBB;循环判断语句,CX=CX-1,若 CX 不等于 0,则转到 CCC,将下一个低四位存入存储单元中,否则循环结束MOVCX,0004H;给 CX 寄存器赋值为 0
6、004HMOVSI, OFFSETBUF3 ; 将 SI 指向变量 BUF3 开始存储单元MOVDX,SI;将 SI 所指的数据装入 DX 寄存器中ADDSI,03H;将 DI 指针下移三个字CCC: MOVAX,DX;将 DX 中的内容装入 AX 寄存器中ANDAX,000FH; 即使 BUF3 的低四位不变,其余均变为 0CMPAL,0AH;比较AL与 0AH 的大小,以便能正确转换为 0-9 的 ASCII 值JBDDD;若AL0AH,则转到 DDD,否则,顺序执行ADDAL,07H;AL+07H,使得 AL 能转换成相应数字的 ASCII 值精选优质文档-倾情为你奉上专心-专注-专业D
7、DD:ADDAL,30H将AL转换成相应数字的 ASCII 值MOVSI,AL;将 AL 中的内容装入以 DS 中的内容为段基地址,以 SI 的内容为偏移地址的存储单元DECSIDI=DI-1,即将 DI 指向前一个存储单元PUSHCX;保存 CX 寄存器的内容MOVCL,04H; 给 CL 寄存器赋值为 04HSHRDX, CL;将DX逻辑右移四位POPCX;恢复 CX 寄存器的内容LOOPCCC;循环判断语句,CX=CX-1,若 CX 不等于 0,则转到 CCC,将下一个低四位存入存储单元中,否则循环结束MOVDX,OFFSETBUF2;将 BUF2 的偏移地址装入 DX 寄存器中MOVA
8、H,09HINT21H;在屏幕上显示 BUF1 的反码MOVDX,OFFSETBUF3MOVAH,09HINT21H;在屏幕上显示 BUF1 的补码MOVAH,4CHINT21H带返回码终止CODEENDSENDBEGIN2) 说明程序中各部分所用的算法。3)说明主要符号和所用到寄存器的功能。代码段寄存器 CS 与 CODE 关联,数据段寄存器 DS 与 DATA 关联将数据段的基地址装入数据段寄存器 DS,CX 计数器寄存器4) 总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。精选优质文档-倾情为你奉上专心-专注-专业解决了判断、转向和定标号,写程序时才能分清如何写程序 。5) 说明标志位 CF、SF 和 OF 的意义。CFCF 是进位标志是进位标志, ,,SFSF 是符号标志是符号标志 ,OFOF 是溢出标志是溢出标志. .6) 上机调试过程中遇到的问题是如何解决的。符号问题的替换,和汇编调试的过程 ,向别人寻求帮助7) 对调试源程序的结果进行分析。首先,判断数的正负,若为正,则反码、补码与原码一样,若为负,则反码按位取反,补码按位取反后加一。