您好,欢迎访问三七文档
姓名:班级:学号:1实验一顺序与分支程序设计一、实验目的1)掌握顺序程序设计方法。2)掌握分支程序的结构及分支程序的设计,调试方法。2)学习数据传送及算术和逻辑运算指令的用法。3)熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序的过程。二、实验内容1)有一字变量BUF1是以原码表示的有符号数,要求将其转换为反码和补码,分别存入BUF2和BUF3单元,并在屏幕上显示出来。2)有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。3)在BUF和BUF+1、BUF+2单元分别放有一个无符号字节型数,编程序将其中最大数存入MAX单元,并在屏幕上显示。4)要求同上,只是比较的数为有符号数。5)将1000H单元开始的10个字节数,采用奇偶校验,将奇数在前偶数在后仍存回原数据区。本实验要求在DEBUG调试状态下进行,包括汇编程序、运行程序、检查结果。6)从键盘上接收一位十进制数X,计算Y值,并以十六进制形式显示出来,Y按下列公式计算。)6(2/)5()4(2)3(2222XXXXXXXXXXY7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。a)当输入字符为A,则计算X+Y,并以十六进制形式显示出来姓名:班级:学号:2b)当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来c)当输入字符为C,则计算X*Y,并以十六进制形式显示出来d)当输入字符为D,则计算X/Y,并以十六进制形式显示出来三、实验设备PC机一台四、实验准备1)分析题目,将程序中的原始数据和最终结果的存取方法确定好。2)画出流程图。3)写出源程序。4)对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。五、实验步骤1)输入源程序。2)汇编、连接程序,生成.EXE文件,执行文件,检查结果。六、实验报告的要求1)列出源程序,说明程序的基本结构,包括程序中各部分的功能。2)说明程序中各部分所用的算法。3)说明主要符号和所用到寄存器的功能。4)总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。5)说明标志位CF、SF和OF的意义。6)上机调试过程中遇到的问题是如何解决的。7)对调试源程序的结果进行分析。实验1-1源程序:姓名:班级:学号:3DATASEGMENTBUF1DW932AH;(以十六进制表示一个数的原码,包括符号位)BUF2DW?BUF3DW?DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,BUF1MOVBX,AXANDAX,0FFFFHJNSL;sf表示符号标志位,若最高位大于7时,则为负,该命令判断是否为负,为负则求反(加一),为正则原样输出NEGAXXORBX,0FFFFHORAX,8000H;保持符号位不变ORBX,8000H姓名:班级:学号:4L:MOVBUF2,BXMOVBUF3,AXPUSHAXPUSHBXMOVCX,2LOP:POPBX;将结果每一位通过循环移位显示在屏幕上PUSHCXMOVCX,4LP:PUSHCXMOVCL,4ROLBX,CLMOVDL,BLANDDL,0FHCMPDL,0AHJBL2ADDDL,07HL2:ADDDL,30HMOVAH,02HINT21HPOPCXLOOPLPMOVDL,''INT21HPOPCX姓名:班级:学号:5LOOPLOPMOVAH,4CHINT21HCODEENDSENDSTART运行结果:屏幕上显示的是BUF1数的反码和补码(十六进制,包括符号位)。调试时发现结果显示成乱码,经过研究程序代码发现如果数字在A到F之间,则需要将内存数值加37。实验1-2源程序:datasegmentAdw00ED1hBdw0BDE9h姓名:班级:学号:6dataendsstack1segmentparastackdw20hdup(0)stack1endscodesegmentassumecs:code,ds:data,ss:stack1,es:datastart:MOVAX,DATAMOVDS,AXMOVBX,A;(把A存储的单元放入BX寄存器中)MOVAX,B;(把B存储的单元放入AX寄存器中)ADDBX,AXJCL0;cf是无符号的进位,当两数相加大于0ffffh,产生进位MOVA,BXL0:MOVDX,BX;显示相加结果ANDDX,0F000HMOVCL,12SHRDX,CLCMPDX,0AHJBL1ADDDX,7HL1:ADDDX,30H姓名:班级:学号:7MOVAH,02HINT21HMOVDX,BXANDDX,0F00HMOVCL,8SHRDX,CLCMPDX,0AHJBL2ADDDX,7HL2:ADDDX,30HMOVAH,02HINT21HMOVDX,BXANDDX,0F0HMOVCL,4SHRDX,CLCMPDX,0AHJBL3ADDDX,7HL3:ADDDX,30HMOVAH,02HINT21HMOVDX,BXANDDX,0FH姓名:班级:学号:8CMPDX,0AHJBL4ADDDX,7HL4:ADDDX,30HMOVAH,02HINT21Hmovah,4chint21hcodeendsendstart运行结果:实验1-3源代码:datasegmentBUFDB03EH,060H,93HMAXDB00Hdataendsstack1segmentparastackdw20hdup(0)stack1endscodesegment姓名:班级:学号:9assumecs:code,ds:data,ss:stack1,es:dataSTART:MOVAX,DATAMOVDS,AXANDAX,0000HMOVAL,BUFMOVMAX,ALMOVBL,BUF+1CMPMAX,BL;找到最大的数JAEL1MOVMAX,BLL1:MOVBL,BUF+2CMPMAX,BLJAEL2;显示最大的数MOVMAX,BLL2:ANDDX,0000HMOVDL,MAXANDDL,0F0HMOVCL,4SHRDL,CLCMPDL,0AHJBL3ADDDL,7HL3:ADDDL,30H姓名:班级:学号:10MOVAH,02HINT21HMOVDL,MAXANDDL,0FHCMPDL,0AHJBL4ADDDL,7HL4:ADDDL,30HMOVAH,02HINT21HMOVAH,4CHINT21HCODEENDSENDSTART运行结果:实验1-4源代码:datasegmentBUFDB-34H,3AH,-43H;转换成补码MAXDB00Hdataendsstack1segmentparastack姓名:班级:学号:11dw20hdup(0)stack1endscodesegmentassumecs:code,ds:data,ss:stack1,es:dataSTART:MOVAX,DATAMOVDS,AXANDAX,0000HMOVAL,BUF;通过对所有的数取阶码比较大小ADDAL,80HMOVMAX,ALMOVBL,BUF+1ADDBL,80HCMPMAX,BLJAEL1MOVMAX,BLL1:MOVBL,BUF+2ADDBL,80HCMPMAX,BLJAEL2MOVMAX,BLL2:ANDDX,0000HMOVDL,MAX姓名:班级:学号:12SUBDL,80H;包含有cmp功能,对最大的数减去80h(取回原码)JAEL3MOVBL,DLMOVDL,'-';如果是负数显示符号MOVAH,02HINT21HMOVDL,BLNEGDL;求补(针对带符号数)L3:MOVBL,DL;显示最大的数ANDDL,0F0HMOVCL,4SHRDL,CLADDDL,30HMOVAH,02HINT21HMOVDL,BLANDDL,0FHCMPDL,0AHJBL4ADDDL,7HL4:ADDDL,30HMOVAH,02HINT21HMOVAH,4CH姓名:班级:学号:13INT21HCODEENDSENDSTART运行结果:实验1-5源程序:DATASEGMENTBUFDB10DUP(0)BFDB00011110B,11111111B,6DUP(0),00110000B,00000001BDATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVAX,100HMOVES,AXMOVCX,10姓名:班级:学号:14MOVDI,0MOVSI,9LOP:MOVBX,CX;MOVAL,BF+[BX]-1MOVAL,ES:-1[BX]ANDAL,0FFH;mov不影响标志位JPL1;pf为奇偶标志位,当位数为偶数时为1LEABX,BUFADDBX,DIMOV[BX],ALINCDIJMPL2L1:MOV[BUF+SI],ALDECSIL2:LOOPLOPMOVCX,10LP:MOVBX,CXMOVAL,BUF+[BX]-1MOVES:-1[BX],ALLOOPLPMOVAH,4CHINT21HCODEENDSENDSTART姓名:班级:学号:15运行结果:1、对bf进行检验,再存入buf2、对指定的内存单元进行检验,存回指定的内存单元实验1-6源程序:DATASEGMENTTABLEDWL3,L4,L5,L6;偏移地址是以字为单位的DATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1,ES:DATA姓名:班级:学号:16START:MOVAX,DATAMOVDS,AXMOVAH,01HINT21HSUBAL,30HCMPAL,3JBL9CMPAL,6JAL9ANDAH,00HMOVDL,ALLEABX,TABLESUBDL,3SHLDL,1MOVDI,DX;MOVDL,ALMULDLJMP[BX+DI]L3:ADDAL,DLJMPL1L4:SHLDL,1SUBAL,DLJMPL1姓名:班级:学号:17L5:JMPL1L6:SHRAL,1JMPL1L1:MOVBX,AXMOVDX,BXMOVCL,4SHRDL,CLCMPDL,0AHJBL7ADDDL,7HL7:ADDDL,30HMOVAH,02HINT21HMOVDL,BLANDDL,0FHCMPDL,0AHJBL8ADDDL,7HL8:ADDDL,30HMOVAH,02HINT21HL9:MOVAH,4CHINT21HCODEENDS姓名:班级:学号:18ENDSTART结果:实验1-7源程序:DATASEGMENTTABLEDWLA,LB,LC,LDDATAENDSSTACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,02HLOP:MOVAH,01HINT21HCMPAL,30HJBPEND姓名:班级:学号:19CMPAL,39HJANEXTSUBAL,30HJMPL1NEXT:CMPAL,41HJBPENDCMPAL,46HJAPENDSUBAL,40HADDAL,09HL1:ANDAX,00FFHPUSHAXLOOPLOPMOVAH,01HINT21HCMPAL,41HJBPENDCMPAL,44HJAPENDSUBAL,41HSHLAL,1MOVBX,OFFSETTABLEADDBL,ALJMP[
本文标题:汇编实验1
链接地址:https://www.777doc.com/doc-5274871 .html