汇编语言上机实验
报告
软件系统测试报告下载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整除的数的偏移地址,后面给出这些数的个数。上机心得:编程实在太痛苦了!!!