汇编实验1程序.docx

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一顺序与分支程序设计一、实验目的掌握顺序程序设计方法。掌握分支程序的结构及分支程序的设计,调试方法。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按下列公式计算。7)从键盘上接收两个一位十六进制数X和Y,然后再输入一个A-D之间的一个字符,按下列要求计算。当输入字符为A,则计算X+Y,并以十六进制形式显示出来当输入字符为B,则计算|X-Y|,并以十六进制形式显示出来当输入字符为C,则计算X*Y,并以十六进制形式显示出来当输入字符为D,则计算X/Y,并以十六进制形式显示出来三、实验设备PC机一台四、实验准备1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。2) 画出流程图。3) 写出源程序。4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。五、实验步骤1) 输入源程序。2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。六、实验报告的要求1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。2) 说明程序中各部分所用的算法。3)说明主要符号和所用到寄存器的功能。4) 总结为什么在设计分支程序时必须解决三个问题:判断、转向和定标号。5) 说明标志位CF、SF和OF的意义。6) 上机调试过程中遇到的问题是如何解决的。 7) 对调试源程序的结果进行分析。实验1-1 源程序:DATA SEGMENT BUF1 DW 932AH ;(以十六进制表示一个数的原码,包括符号位) BUF2 DW ? BUF3 DW ?DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1,ES:DATASTART: MOV AX,DATA MOV DS,AX MOV AX,BUF1 MOV BX,AX AND AX,0FFFFH JNS L ;sf表示符号标志位,若最高位大于7时,则为负,该命令判断是否为负,为负则求反(加一),为正则原样输出 NEG AX XOR BX,0FFFFH OR AX,8000H ;保持符号位不变 OR BX,8000H L:MOV BUF2,BX MOV BUF3,AX PUSH AX PUSH BX MOV CX,2LOP:POP BX;将结果每一位通过循环移位显示在屏幕上 PUSH CX MOV CX,4 LP:PUSH CX MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH CMP DL,0AH JB L2 ADD DL,07H L2:ADD DL,30H MOV AH,02H INT 21H POP CX LOOP LP MOV DL, INT 21H POP CX LOOP LOP MOV AH,4CH INT 21HCODE ENDSEND START运行结果:屏幕上显示的是BUF1数的反码和补码(十六进制,包括符号位)。调试时发现结果显示成乱码,经过研究程序代码发现如果数字在A到F之间,则需要将内存数值加37。实验1-2源程序:data segment A dw 00ED1h B dw0BDE9h data endsstack1 segment para stackdw 20h dup(0)stack1 endscode segmentassume cs:code,ds:data,ss:stack1,es:datastart: MOV AX,DATA MOV DS,AX MOV B

文档评论(0)

502992 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档