欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    北京理工大学最终实验报告.docx

    • 资源ID:35005735       资源大小:80.50KB        全文页数:26页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    北京理工大学最终实验报告.docx

    本科实验报告实验名称: 汇编实验 课程名称:汇编语言实验时间:任课教师:实验地点:实验教师:实验类型: 原理验证 综合设计 自主创新学生姓名:学号/班级:组 号:学 院:信息与电子学院同组搭档:专 业:电子信息工程成 绩:汇编语言实验报告实验一 DOS 环境下的汇编语言编程环境使用(基础与验证型)一、实验要求和目的1、掌握汇编语言程序设计的基本流程和学会上机开发简单程序;2、熟练掌握宏汇编程序MASM 的使用;3、熟练掌握连接程序LINK 的使用;4、熟练掌握DEBUG 的使用;二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识汇编语言程序设计上机开发过程如图1.1 所示。四、实验内容1、汇编、链接并调试给出的简单程序,找出程序中的错误。(一)录入并建立汇编语言源程序文件(ASM 文件)(二) 用汇编程序MASM 将ASM 文件汇编成目标程序文件(OBJ 文件)(三) 用连接程序LINK 生成可执行程序文件(EXE 文件)(四) 程序的调试2、完成程序设计:分类统计字数组data 中正数、负数和零的个数,并分别存入内存字变量Positive、Negative和Zero 中,数组元素个数保存在其第一个字中。使用Debug 查看Positive、Negative 和Zero 三个变量的数据。五、实验步骤1. 输入给出的程序发现其中有错误,根据提示和观察,发现:ADDITION后未打冒号,CMP错打为COM。修改原代码即可。修改后的代码:DATAS SEGMENT word1 DW 1,9078H byte1 db 21,'world' dd 12345678h msg db 'Hello everyone!$'DATAS ENDSSTACKS SEGMENT sta dw 20 dup(?) top equ size sta STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov dx,offset msg mov ah,9 int 21hnop mov ax,0 mov bx,0 mov bx,1haddition: add ax,bx inc bx cmp bx,10 jae addition MOV AH,4CH INT 21HCODES ENDSEND START程序运行正常。实验二流程图和代码如下:从第一个数开始SATAS SEGMENTary db 1,-6, -7,0positive dw 0negative dw 0zero dw 0 数字为正?为负?为零?DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT 为零;zero+为正,positive+ ASSUME CS:CODES,DS:DATAS,SS:STACKS 为负;negative+START: MOV AX,DATAS MOV DS,AX mov cx,3 mov si,0 L1:mov al,arysi cmp al ,0否是否结束? jg L2 jl L4 inc zero jmp L3 L2:inc positive是 jmp L3 L4: inc negative结束 L3:inc si dec cx jnz L1 mov ax,positive mov bx,negative mov dx,zero MOV AH,4CH INT 21HCODES ENDS END START根据测试数据,则应有1个正数,1个零,2个负数。结果正确换一个输入:结果正确实验二 算术运算类操作实验 (基础与设计)一、实验要求和目的1、了解汇编语言中的二进制、十六进制、十进制、BCD 码的表示形式;2、掌握各类运算类指令对各状态标志位的影响及测试方法;3、熟悉汇编语言二进制多字节加减法基本指令的使用方法;4、熟悉无符号数和有符号数乘法和除法指令的使用;5、掌握符号位扩展指令的使用。6、掌握BCD 码调整指令的使用方法二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识本实验主要进行算术运算程序设计和调试,涉及到的知识点包括:1加减法处理指令主要有加法指令 ADD,带进位加法ADC,减法指令SUB,带进位减法指令SBB。2乘除法指令和符号位扩展指令主要有无符号数乘法指令MUL,带符号数乘法指令IMUL,无符号数除法指令DIV,带符号数除法指令IDIV,以及符号位从字节扩展到字的指令CBW 和从字扩展到双字的指令CWD。3BCD 码的调整指令主要有非压缩的 BCD 码加法调整指令DAA,压缩的BCD 码减法调整指令DAS,非压缩的BCD 码加法调整指令AAA,非压缩的BCD 码减法调整指令AAS,乘法的非压缩BCD码调整指令AAM,除法的非压缩BCD 码调整指令AAD。8088/8086 指令系统提供了实现加、减、乘、除运算的上述基本指令, 可对表 1 所示的数据类型进行数据运算。 表 1 数据类型数据运算表各指令的格式、功能及其对标志位的影响等细节知识,请同学们查阅相关书籍,这里不再赘余。四、实验内容与步骤1、对于两组无符号数,087H 和034H,0C2H 和5FH,试编程求这两组数的和差积商,并考虑计算结果对标志寄存器中状态标志位的影响。代码如下:流程图:依次计算两组数的加减乘除,用add,sub,mul,div指令即可。实验1:DATAS SEGMENT buf1 db 087h,034h buf2 db 0c2h,05fh buf3 db 2 dup(?)DATAS ENDSSTACKS SEGMENT ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov si,0 mov al,buf1si mov bl,buf1si+1 add al,bl mov buf3si,al mov al,0 mov buf3si+1,ah MOV AH,4CH INT 21HCODES ENDSEND START之后更改buf1和buf2中的值完成下表计算状态标志表达式结果cfafzfofsfpf087h+034h00bb010001087h-034h0053000000087h*034h1b6c000001087h/034h00020000010c2h+5fh01210100010c2h-5fh00630100010c2h*5fh47fe0100010c2h/5fh0247010001实验2:在数据段定义了两个多精度的有符号16 进制数,FIRST 和SECOND ,1)求两数的和与差,并将结果存放在THIRD 为首地址的缓冲区中;2)如果把两组数据当作十进制数据来处理,再次求两数的和与差,并将结果存放在FORTH 为首地址的缓冲区中。试编程实现上述运算。程序代码如下:DATAS SEGMENTfirst DB 45H,82, 96H,57Hsecond DB 12H,46H,83H,45Hthird db 4 dup(?)forth db 4 dup(?)DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AXmov si,0 mov cx,4 loop1: mov al,firstsi mov bl,secondsi add al,bl mov thirdsi,al inc si dec cx jnz loop1 MOV AH,4CH INT 21HCODES ENDS END START十六进制:十进制:结果: 16进制结果 10进制结果FIRST +SECOND 57 C9 19 9CH 58 29 80 02DFIRST -SECOND 33 3C 13 12H 33 36 13 12D实验3:编程计算((Z +X*Y -328) -V)/ Y,其中X、Y、Z、V 均为16 位带符号数,假设初始数据分别装入X、Y、Z、V 单元,要求上式计算结果的商存入AX,余数存入DX 寄存器。同学自行给出初始值加以验证程序。程序代码 如下: DATAS SEGMENT V DW ? X DW ? Y DW ? Z DW ? DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV AX,X IMUL Y MOV CX,AX MOV BX,DX MOV AX,Z CWD ADD CX,AX ADC BX,DX SUB CX,328 SBB BX,0 MOV AX,V CWD SUB CX,AX SBB DX,BX MOV AX,CX IDIV Y MOV AH,4CH INT 21H CODES ENDS END START测试用例:V=50,X=72,Y=5,Z=30AX=2,DX=2。与实际计算结果相符。实验三 字符串操作实验(设计性实验)一、实验要求和目的1了解汇编语言字符串处理基本流程;2熟悉汇编语言字符串处理基本指令的使用方法;3掌握利用汇编语言实现字符串处理的程序设计方法。二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识1、字符串处理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串长度;(4)利用CLD 或STD 指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理。其中,CLD 指令使DF=0,在执行串处理指令时可使地址自动增量;STD 使DF=1,在执行串处理指令时可使地址自动减量。提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。2、重复前缀指令,重复次数由计数寄存器CX 中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX 中值减至0 时,停止重复执行,继续执行下一条指令REP 无条件重复前缀,重复串操作直到计数寄存器的内容CX 为0 为止。经常与REP配合工作的字符串处理指令有MOVS、STOS 和LODS。REPE/REPZ 判断计数寄存器的内容CX 是否为0 或ZF=0(即比较的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。REPNE/REPNZ 判断计数寄存器的内容是否为0 或ZF=1(即比较的两个操作数相等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ 配合工作的串指令有CMPS 和SCAS。3、字符串处理基本指令(1)MOVS 传送指令格式:MOVS DST,SRC 或MOVSB(传送字节)或MOVSW(传送字)。后面两种形式需要与REP 指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器(DST)指向的附加段中的一个字(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。(2)STOS 存入串指令格式:STOS DST 或STOSB(存入字节)或STOSW(存入字)。该指令把 AL 或AX 的内容存入由目的变址寄存器指向的附加段的某单元中,并根据方向标志(DF)和数据类型修改目的变址寄存器的内容。(3)LODS 从串取指令格式:LODS SRC 或LODSB(取字节)或LODSW(取字)。该指令把由源变址寄存器指向的数据段中某单元的内容传送到 AL 或AX 中,并根据方向标志和数据类型修改源变址寄存器的内容。(4)CMPS 串比较指令格式:CMPS SRC,DST 或CMPSB 或CMPSW。该指令把由源变址寄存器指向的数据段中的一个字节或字与由目的变址寄存器所指向的附加段中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。该指令与 REPE/REPZ 或REPNE/REPNZ 结合,可以比较两个数据串。(5)SCAS 串扫描指令格式:SCAS DST 或SCASB 或SCASW。该指令把 AL 或AX 的内容与由目的变址寄存器所指向的附加段中的一个字节或字进行比较,并不保存结果,只根据结果设置条件码。该指令与 REPE/REPZ 或REPNE/REPNZ 结合,可以从一个字符串中查找一个指定的字符。总的来说,字符串处理可以将缓冲区中一个数据块搬至存储器的另一处,比较两个字符串是否相等,从缓冲区中一个数据块寻找某一个特定的关键字,顺次从一个缓冲区取字符或顺次向一个缓冲区存字符等。四、实验内容与步骤1、比较缓冲区中两字符串是否相同,相同则AL 返回0,不同AL 返回1。为了使程序的通用性比较好,字符串长度要求自动获取。(要求用字符串处理方法)程序代码如下:data segmentchuan1 db 'asdfghjklb'chuan2 db 'asdfghjklb'chuan0 dw ?data endscode segmentok:mov al,1jmp endlstart:mov ax,datamov ds,axlea si,chuan1lea di,chuan2mov bx,0mov cx,offset chuan2-offset chuan1cmp cx,offset chuan0-offset chuan2jne oks:mov ah,si+bxcmp ah,di+bxjne okadd bx,1mov al,0loop sendl:nopmov ax,4c00hint 21hcode endsend start2、 编写程序,将内存中某一区域的数据传送到另一区域。(要求用字符串处理方法)data segmentchuan1 db 'zxcvbnmqwertyuiop'chuan2 db 100 dup (?)data endscode segmentstart:mov ax,datamov ds,axmov es,axlea si,chuan1lea di,chuan2mov cx,offset chuan2-offset chuan1cldrep movsbmov ax,4c00hint 21hcode endsend start3、编写程序,在已知字符串中搜索特定字符!,若找到则AL 返回0,找不到AL 返回1。(要求用字符串处理方法)DATAS SEGMENT S1 DB 'w!er' S2 DW $DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX LEA DI,S1 MOV ES,AX MOV AL,'!' MOV CX,S2-offset S1 REPNE SCASB JNE B1 MOV AL,0 JMP S B1: MOV AL,1 S: MOV AH,4CH INT 21HCODES ENDSEND START 4、 编写程序,统计一串字符串中字符"."出现的次数。(要求用字符串处理方法);代码及流程图见下:data segmentchuan db '.f2t$'daan dw ?data endscode segmentok:inc word ptrsiinc bxjmp sstart:mov ax,datamov ds,axlea di,chuanlea si,daanmov bx,0mov al,'$'clds:cmp byte ptr di+bx,'$'je endlcmp byte ptr di+bx,'.'je okinc bxloop smov al,1endl:nopmov ax,4c00hint 21hcode endsend start五、思考与练习1、如果不用字符串处理方法,而用其他方法如何实现题目2 的程序设计,比较两种方法效果?答:用mov指令和loop循环配合,同样可以达到复制字符串的目的,但其中的循环比较繁琐,不如用字符串传送函数方便。实验四 分支和循环程序设计实验(设计性实验)一、实验要求和目的1熟悉汇编语言程序设计结构;2熟悉汇编语言分支程序基本指令的使用方法;3掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4了解汇编语言循环程序设计的基本流程;5熟悉汇编语言循环基本指令的使用方法;6掌握利用汇编语言的循环指令完成循环程序设计方法。二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。1无条件转移指令JMP无条件转移指令JMP 是使程序无条件转移至目标处,又分为段内转移、段间转移。2条件转移指令JXX条件转移指令可分为三大类:1)简单条件转移指令指令。根据单个标志位的状态判断转移条件。2)无符号数条件转移指令。假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:在汇编程序设计中,要熟练使用循环指令和跳转等指令来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。循环结构的组成及其设计方法的知识要点有:1、循环程序的基本结构通常由3 部分组成1) 初始化部分建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.2) 循环体循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务;修改部分:对循环参数进行修改,并为下一次循环做准备;循环控制部分:判断循环结束条件是否满足。通常判断循环结束方法: 用计数控制循环;循环是否进行了预定的次数。 用条件控制循环。循环终止条件是否满足。3)结束处理处理部分主要是对循环的结果进行处理,比如现实提示信息等,很多时候没有此部分程序。2、循环控制指令:指令格式 执行操作 循环结束条件LOOP 标号 CX=CX-1; 若CX=0,则循环 CX=0LOOPNZ/LOOPNE 标号 CX=CX-1; 若CX=0 且ZF=0,则循环 CX=0 或ZF=0LOOPZ/LOOPE 标号 CX=CX-1; 若CX=0 且ZF=1,则循环 CX=0 或ZF=1JCXZ 标号 仅测试(CX)=0? 若等于0,则转移到目标地址,否则就顺序执行3、 循环控制可以分为:计数循环和条件循环。作为计数循环,一般是指循环次数是已知的情况,在程序设计的的循环时,先应将循环次数送入计数器CX 中进行计数,在循环体中使用LOOP 等循环指令。当然,也可以通过其他方式来进行,如cxcx-1,jnz 等结合实现。四、实验内容与步骤1、判断方程AX2+BX+C=0 是否有实根。若有实根,则将字节变量tag 置1,否则置0。假设A、B、C 均为字节变量,数据范围为-128127。程序代码如下:data segmentA db 20B db 10C db 20tar db ?data endscode segmentyes:mov al,1mov tar,aljmp endlstart:mov ax,datamov ds,axmov al,Bmul almov cx,axmov al,Amul Cmov bx,axmov ax,4mul bxsub ax,cxsbb dx,0cmp dx,0jl yesmov al,0mov tar,alendl:nopmov ax,4c00hint 21hcode endsend start2、编写一个程序,判别键盘上输入的字符;若是1-9 字符,则显示之;若为A-Z 字符,显示“C”;若为a-z 字符,显示“c”;若是回车字符<CR>(其ASCII 码为0DH),则结束程序,若为其它字符则显示显示“R”。程序代码如下:assume cs:code,ds:datadata segmentbuf db ?biaozhi db 0data endscode segmentzhongjian1:inc biaozhijmp s1show0:cmp biaozhi,0je endamov dl,almov ah,2int 21hjmp endlzhongjian2:inc biaozhijmp s2show1:cmp biaozhi,0je endbmov dl,67mov ah,2int 21hjmp endlzhongjian3:inc biaozhijmp s3show2:cmp biaozhi,0je endcmov dl,99mov ah,2int 21hjmp endlshow3:mov dl,82mov ah,2int 21hjmp endlstart:mov ax,datamov ds,axmov ah,1int 21hcmp al,57jna zhongjian1s1:cmp al,49jnb show0enda:mov byte ptr biaozhi,0cmp al,65jnb zhongjian2s2:cmp al,90jna show1endb:mov byte ptr biaozhi,0cmp al,97jnb zhongjian3s3:cmp al,122jna show2endc:mov byte ptr biaozhi,0cmp al,0dhje endljmp show3endl:nopmov ax,4c00hint 21hcode endsend start3、编写程序,在字符串变量STRING 中存有一个以$为结尾的ASCII 码字符串,要求计算字符串的长度,并把它存入LENGTH 单元中。(要求用条件控制循环方法,并且字符串分数据类型是字节和字两种情况)程序代码如下:assume cs:code,ds:datadata segmentSTRING db 'asdfghjkl$'LENGTH db ?data endscode segmentstart:mov ax,datamov ds,axmov bx,0mov di,0s:cmp byte ptr di,'$'jz endlinc diinc siloop sendl:mov LENGTH,sinopmov ax,4c00hint 21hcode endsend start(2)字类型:assume cs:code,ds:datadata segmentSTRING dw "a","d","g","$"LENGTH db ?data endscode segmentstart:mov ax,datamov ds,axmov bx,0mov di,0s:cmp word ptr di,'$'jz endlinc diinc diinc siloop sendl:mov LENGTH,sinopmov ax,4c00hint 21hcode endsend start实验五 子程序设计实验(设计性实验)一、实验要求和目的1熟悉汇编语言程序设计结构;2熟悉汇编语言子程序设计方法;3熟悉利用汇编语言子程序参数传递方法;4熟悉汇编语言字符串处理基本指令的使用方法;5掌握利用汇编语言实现字符串的输入输出程序设计方法;6掌握数制转换程序实现方法。二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识A) 子程序知识要点:1、 掌握子程序的定义语句;过程名 PROC near/far过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法.说明时,应含如下内容:.子程序名:命名时要名中见意.子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、 )掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。.段内调用与返回:调用子程序指令与子程序同在一个段内。因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。3)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。一般利用堆栈实现现场保护和恢复的格式:过程名PROC NEAR/FARPUSH AXPUSH BXPUSH DXPOP DXPOP AXRET过程名 ENDP4.子程序的参数传递方法1 寄存器传递参数这种方式是最基本的参数传递方式。2 存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。3 用堆栈传递参数利用共享堆栈区,来传递参数是重要的的方法之一。B) 字符、字符串输入输出知识要点:在实际应用中,经常需要从键盘输入数据并将结果等内容显示到屏幕上,方便程序控制及查看结果。汇编语言的数据输入和输出分成两类,一是单个字符数据的输入输出,一是字符串数据的输入输出。都可以通过DOS 功能调用来实现,下面就分别介绍下用来实现数据输入输出的功能调用的使用方法。1、单个字符输入单个字符输入可以利用DOS 的1 号功能调用来完成,使用方法为:MOV AH,1INT 21H这两条语句执行后,光标会在屏幕上闪烁,等待输入数据,输入的数据以ASCII码形式存储在AL 寄存器中。2、单个字符输出单个字符输出可利用DOS2 号功能调用来完成,使用方法为:MOV DL,?MOV AH,2INT 21H单个字符输出需要把要输出字符的ASCII 码放在DL 寄存器中。3、字符串输入从键盘输入一串字符串可以利用DOS 的10 号功能调用来完成,使用方法为:BUF DB 50 ;预定义可以输入的最大字符个数DB ? ;实际输入字符个数,根据输入自动统计DB 50 DUP (?) ;存放输入字符串数据缓冲区LEA DX,BUFMOV AH,10INT 21H4、字符串输出字符串输出可由DOS 9 号功能调用来完成,使用方法为:STRING DB HELLO$LEA DX,STRINGMOV AH,9INT 21HC) 表的处理知识要点:表的处理在实际数据处理中应用较为广泛,主要有排序、搜索、插入和删除等操作。有一些常用的冒泡法、对分搜索法等需要掌握。四、实验内容与步骤1、从键盘输入一串字符串(显示提示)到内存中,在该字符串的某一个指定位置,插入某一字符或删除某一字符,并显示操作后的字符串。符串(显示提示)到内存中,在该字符串的某一个指定位置,插入某一字符或删除某一字符,并显示操作后的字符串。程序代码如下:assume cs:code,ds:datadata segmentbuf db 100buf1 db ? db 101 dup (?)buf0 db 101 dup (?)buf2 db 'a'buf3 db 3buf4 db ?buf5 dw ?data endscode segmentinput proc nearmov ah,0ahint 21hmov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hmov ah,1 ;先输字符,再输位置int 21hmov buf2,almov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hmov ah,1int 21hsub al,'0'mov buf3,alretinput endpcharu proc near ;插入函数;lea bx,buf+2mov si,0mov cl,buf3sub cl,2mov ch,0s1:inc siloop s1push siinc siadd si,2mov cl,buf1sub cx,siadd cx,2mov buf4,cllea di,buf0rep movsbpop siadd si,3mov al,buf2mov si,almov di,siinc dilea si,buf0mov cl,buf4rep movsbmov byte ptr di,'$'retcharu endpdelete proc near ;删除函数;lea bx,buf0mov cl,buf3mov ch,0dec cxmov di,0add di,cxmov si,diinc simov cl,buf1sub cx,siadd si,2add di,2rep movsbmov al,'$'mov di,alretdelete endpoutput proc ;输出函数mov dl,10mov ah,2int 21hmov dl,13mov ah,2int 21hlea dx,buf1+1mov ah,9int 21hretoutput endpstart:mov ax,datamov ds,axmov es,axlea

    注意事项

    本文(北京理工大学最终实验报告.docx)为本站会员(叶***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开