首页 「汇编语言上机实验报告(一)」

「汇编语言上机实验报告(一)」

举报
开通vip

「汇编语言上机实验报告(一)」汇编语言上机实验报告(一)李昌健学号:U201010153专业:应用物理学1001班时间:2013年5月16日地点:南一楼实验一在一个以BUF为首址的缓冲区中存放着字符串'Howareyou'。 请写一个程序,将该字符串倒转。倒转后的字符串放在一个新缓冲区中。  使用TD观察程序运行结束前,是否实现了上述功能。提示:变量可用如下伪指令定义BUFDB‘How are you'N=$-BUF  ;N为字符串的长度NEW_BUF DBNDUP(0)操作提示:使用TD.EXE调试程序时,应先单步执行各个语句,每执行一条语句...

「汇编语言上机实验报告(一)」
汇编语言上机实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 (一)李昌健学号:U201010153专业:应用物理学1001班时间:2013年5月16日地点:南一楼实验一在一个以BUF为首址的缓冲区中存放着字符串'Howareyou'。 请写一个程序,将该字符串倒转。倒转后的字符串放在一个新缓冲区中。  使用TD观察程序运行结束前,是否实现了上述功能。提示:变量可用如下伪指令定义BUFDB‘How are you'N=$-BUF  ;N为字符串的长度NEW_BUF DBNDUP(0)操作提示:使用TD.EXE调试程序时,应先单步执行各个语句,每执行一条语句,都应观察数据段中的内容以及相应寄存器的变化。二 实验要求掌握基本的程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 框架和方法、熟悉常用指令的用法、熟悉DOS功能调用、进一步掌握TD的使用方法。三 寄存器分配和变量定义说明本题利用LOOP做循环,逐一将BUF中的字节复制到NEW_BUF中。1 存储单元分配BUF:存放初始串’howareyou ’NEW_BUF:存放复制的字符串2寄存器分配BX:BUF的偏移地址BP:NEW_BUF的偏移地址CX: 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 循环次数SI,DI:分别用作BUF和NEW_BUF的变址寄存器AX:临时寄存器四 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图五 源代码DATASEGMENT BUFDB'Howareyou'N=$-BUFNEW_BUF DBNDUP(0)DATA ENDSCODESEGMENT  ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAﻩMOV DS,AXMOVBX,OFFSETBUFMOVBP,OFFSETNEW_BUFﻩMOV CX,N    MOVSI,CX   MOV DI,0DECSILINE: MOVAL,[BX+DI]  MOVDS:[BP+SI],AL    INC DI   DEC SI   LOOP LINECODEENDS  END STARTﻩ六运行结果用td调试程序,可以看到在数据段里NEW_BUF已经存放了倒置的BUF.实验二一 题目假设数据段定义如下:DATASEGMENTSTRINGDB‘ThePersonalComputer&TV’DATA  ENDS试用字串操作等指令编程完成一下功能:把该字符串传送到附加段中偏移量为GET_CHAR开始的内存单元中。比较该字符串是否与’TheComputer’相同,若相同则将AL寄存器的内容置1,否则置0.并要求将比较次数送到BL寄存器中检查该字符串是否有‘&’符,若有则用空格符将其替换。把字符串大写字母传送到附加段中CAPS开始的单元中,其余字符传到以CHART开始的单元中。然后将数据段中存储上述字符串的单元清零。二 实验要求掌握基本的程序设计框架和方法、熟悉常用指令的用法、熟悉DOS功能调用、进一步掌握TD的使用方法。学会熟练适用字符串操作指令。三寄存器分配和变量定义说明本题利用字符串操作指令MOVSB,CMPSB,SCASB等实现字符串的传递,比较,搜索等功能。1变量定义说明对于第一问,数据段中STRING用于存放初始字符串,附加段中GET_CHAR用于存放复制后的字符串。对于第二问,附加段中COM用于存放待比较的字符串’TheComputer’。对于第三问,没有用到附加段,只是用到了数据段中的初始字符串STRING。对于第四问,附加段中CAPS用于存放大写字母,CHART用于存放其他字母。2寄存器分配SI:存放源串的偏移地址。DI:存放目串的偏移地址。CX:存放循环计数值。AX,BX:临时使用的的寄存器。四流程图开始(1)将STRING偏移地址赋给SI,将GET_CHAR偏移地址赋给DI,将STRING的长度赋给CX。结束利用MOVSB进行数据传递(2)ﻩ结束将找到的&替换为空格利用SCASB查询是否有&将’&’赋给AX开始(3)结束交换BX,DI交换BX,DI利用STOS传到CAPS否是CX为0?利用STOS传到CAPS是(4)五 源代码DATASEGMENTSTRINGDB'ThePersonalComputer&TV'NEQU $-STRINGDATA ENDSHELLOSEGMENTGET_CHARDB 100DUP(0)CAPSDB100 DUP(0)CHART DB100DUP(0)COMDB 'TheComputer'COMPAREDB 0NUMBERDB0HELLOENDSCODESEGMENT  ASSUMECS:CODE,DS:DATA,ES:HELLOSTART:MOVAX,DATA  MOVDS,AX  MOVAX,HELLOMOVES,AXMOVCX,NLEA SI,STRING    LEADI,GET_CHAR CLD REP MOVSB          MOVBL,0  MOVCX,N CMPCX,12   JNELINEB   MOVAL,1   LEASI,STRING   LEADI,COM  MOVBX,CX REPECMPSB   JNE LINEA   JMPLINECLINEA: MOV AL,0    SUBBX,CX  JMPLINECLINEB:MOVAL,0LINEC: MOVCOMPARE,AL   MOVNUMBER,BL   MOVAX,DATA   MOVES,AX MOVAL,'&'  LEA DI,STRING   MOVCX,N  CLD  REPNESCASB   JZ CHANGE  JMPLINEDCHANGE: MOVBYTE PTRDS:[DI-1],''LINED: MOVAX,DATA  MOVDS,AX LEA SI,STRING LEADI,CAPS LEABX,CHART  MOVCX,NCLDLINEF: LODSBCMPAL,41HJBLINEG CMP AL,5AH   JALINEG   STOSB   MOVBYTEPTR [SI-1],0  JMPLINEHLINEG:XCHGBX,DI  STOSB    XCHGBX,DIMOV BYTEPTR[SI-1],0LINEH: LOOP LINEFCODEENDS END START六 运行结果运行后将原字符串放在了附加段偏移地址为0000的区域,如下由于两字符串长度为零,所以不相等,比较次数为零。运行后已将&替换为空格,如下运行后已将大写字母放在一起,其他字母放在另一区域,如下实验三一题目编程将AX寄存器中的内容以相反的次序传送到DX寄存器中,并要求AX中的内容不被破坏,然后统计DX寄存器中1的个数是多少。二 实验要求掌握基本的程序设计框架和方法、熟悉常用指令的用法、熟悉DOS功能调用、进一步掌握TD的使用方法。熟练掌握移位指令的使用。三寄存器分配和变量定义说明本题先将AX中的数据循环右移,每移一位,都将移出位从DX右端移入,这样移动16次后DX便是AX的倒转的数。1 变量定义说明数据段中的PRINT,HELLO,KITTY是用来存放一些用于输出的字符串。2寄存器分配AX:用于存放原始数据DX:用于存放倒转后的数据BL:记录DX中1的个数CX:记录循环次数四流程图开始对AX,CX,BL进行初始化循环右移AX如果移出位为1,则BL加1否是结束CX=0?通过进位位循环左移DXﻩ五源代码DATASEGMENT PRINTDB'Thenumberof1inDX is:$'HELLODB0DH,0AH,'$'KITTYDW0DATAENDSCODESEGMENT   ASSUME CS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX   MOVAX,34H   MOVCX,16 MOVBL,0LINEA:RORAX,1   JCLINEB     JMP LINECLINEB:INC BLLINEC: RCLDX,1  LOOPLINEA MOVKITTY,DX  LEA DX,PRINT MOVAH,9 INT21H  MOVDL,BL ADDDL,30H  MOV AH,2 INT 21H  LEADX,HELLO   MOVAH,9   INT 21H    MOVAX,4C00H  INT21HCODEENDS END START六运行结果程序运行后可以看到DX中是AX的反转,如下所示并且将DX中的1的个数输出,如下图中最后一行:实验四一题目将以BUF为首地址的字节存储区中的既能被2整除也能被7整除的无符号整数的个数(假定≤9)显示出来,同时对应的显示它们分别对应的地址偏移量。二实验要求掌握基本的程序设计框架和方法、熟悉常用指令的用法、熟悉DOS功能调用、进一步掌握TD的使用方法。三寄存器分配和变量定义说明本题将0-255中能被2和7整除的数列表,对于需要检测的数,将其和该表逐一对比,可知其是否能被2和7的整除。1变量定义说明数据段中STAND用于存放0-255中能被2和7整除的数,NUMBER用于存放待检测的数。其他变量用于显示输出。2寄存器分配DI:用于存放目的串偏移地址CX:用于记录循环次数BX,DX,AX:临时使用开始四流程图否否是CX=0?检测是否与STAND中的数相同取NUMBER中待检测的数ﻩ结束五 源代码DATASEGMENT   NUMBER DB0,7,14,25,72,56,70  NA EQU$-NUMBER STAND DB0,14,28,42,56,70,84,98,112,126,140,154,168,182,196,210,224,238,252NBEQU $-STAND PRINTADB'Number','$'  PRINTBDB'Address','$'   PRINTCDB0DH,0AH,'$'DATA ENDSCODESEGMENT  ASSUMECS:CODE,DS:DATA,ES:DATASTART: MOVAX,DATA   MOVDS,AX MOVES,AXMOVAH,9 LEA DX,PRINTBINT21H   LEA DX,PRINTC  INT21H  MOVCX,NA MOV BX,0  MOVSI,0LINEA:  MOV AL,[BX]   LEADI,STAND    PUSHCX  MOVCX,NB   REPNESCASB  JZ LINEB   JMP LINECLINEB: MOV AH,2  MOVDL,BL  ADD DL,30H   INT 21H   MOVAH,9  LEA DX,PRINTC INT21H  INCSILINEC: POPCX INCBX     LOOPLINEA  MOVAH,9  LEADX,PRINTA INT21H   LEADX,PRINTC   INT 21H    MOVDX,SI ADD DL,30H MOV AH,2  INT21H MOVAX,4C00H    INT21H CODEENDS  ENDSTART六 运行结果在下面给出了程序运行的结果。首先给出即可被2整除,又可被7整除的数的偏移地址,后面给出这些数的个数。上机心得:编程实在太痛苦了!!!
本文档为【「汇编语言上机实验报告(一)」】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
逍遥
暂无简介~
格式:doc
大小:328KB
软件:Word
页数:16
分类:生活休闲
上传时间:2022-04-01
浏览量:0