您好,欢迎访问三七文档
实验一顺序与分支程序设计一、实验目的1)掌握顺序程序设计方法。2)掌握分支程序的结构及分支程序的设计,调试方法。2)学习数据传送及算术和逻辑运算指令的用法。3)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。二、实验内容1)有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。三、实验设备PC机一台四、实验准备1)分析题目,将程序中的原始数据和最终结果的存取方法确定好。2)画出流程图。3)写出源程序。4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。五、实验步骤1)输入源程序。2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。六、实验报告的要求1)列出源程序,说明程序的基本结构,包括程序中各部分的功能。DATASEGMENT;数据段BUF1DW9348H;给BUF1赋值BUF2DW4DUP(0),0AH,0DH,'$';定义字型变量,BUF3DW4DUP(0),'$';同上DATAENDS;数据段结束CODESEGMENT;代码段ASSUMECS:CODE,DS:DATA;代码段寄存器CS与CODE关联,数据段寄存器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的反码装入BUF3EEE:MOVCX,0004H;将0004H装入CX计数器寄存器中MOVDI,OFFSETBUF2;将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;若[AL]0AH,则转到QQQ,否则,顺序执行ADDAL,07H;因为[AL]0AH,所以[AL]+07H,使得AL能转换成相应的数字的ASCII值QQQ:ADDAL,30H;将[AL]转化成相应的数字的ASCII值MOV[DI],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寄存器赋值为0004HMOVSI,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;若[AL]0AH,则转到DDD,否则,顺序执行ADDAL,07H;[AL]+07H,使得AL能转换成相应数字的ASCII值DDD:ADDAL,30H将[AL]转换成相应数字的ASCII值MOV[SI],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寄存器中MOVAH,09HINT21H;在屏幕上显示BUF1的反码MOVDX,OFFSETBUF3MOVAH,09HINT21H;在屏幕上显示BUF1的补码MOVAH,4CHINT21H带返回码终止CODEENDSENDBEGIN2)说明程序中各部分所用的算法。3)说明主要符号和所用到寄存器的功能。代码段寄存器CS与CODE关联,数据段寄存器DS与DATA关联将数据段的基地址装入数据段寄存器DS,CX计数器寄存器4)总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。解决了判断、转向和定标号,写程序时才能分清如何写程序。5)说明标志位CF、SF和OF的意义。CF是进位标志,,SF是符号标志,OF是溢出标志.6)上机调试过程中遇到的问题是如何解决的。符号问题的替换,和汇编调试的过程,向别人寻求帮助7)对调试源程序的结果进行分析。首先,判断数的正负,若为正,则反码、补码与原码一样,若为负,则反码按位取反,补码按位取反后加一。
本文标题:汇编实验一
链接地址:https://www.777doc.com/doc-5130657 .html