




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
汇编语言编写从键盘输入一段字符串然后逆序输出DATA SEGMENTDB 512 DUP($) ;定义可输入的字符个数BUF DB $CRLF DB 0DH,0AH,24H ;回车换行符DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AXMOV BX,OFFSET BUF ;指针指向待显示字符串尾部AGAIN:MOV AH,01 ;输入字符INT 21HCMP AL,0DH ;是回车吗JE DISP ;是,转显示DEC BX ;指针减1MOV BX,AL ;存入输入的字符JMP AGAIN ;继续输入DISP:MOV AH,09 ;显示MOV DX,OFFSET CRLF ;回车换行INT 21HMOV DX,BX ;定位待显示字符串首地址MOV AH,09 INT 21H ;显示MOV AH,4CH ;DOS返回INT 21HCODE ENDSEND START; 本程序通过编译,运行正确Code Segment Assume CS:Code,DS:Code; ; 功能:显示指定地址(Str_Addr)的字符串; 入口:; Str_Addr字符串地址(要求在数据段); 用法: Output Str_Addr; 用法举例:Output PromptStrOutput MACRO Str_Addr lea dx,Str_Addr mov ah,9 int 21h EndM; ; 功能:输出一个字符 ; 入口:dl=要显示的字符 Enter_Chr proc Near push ax mov ah,02h int 21h pop ax ret Enter_Chr endp ; ; 功能:输出回车换行Enter_CTLF proc Near push ax push dx mov ah,02h mov dl,0dh int 21h mov dl,0ah int 21h pop dx pop ax retEnter_CTLF endp ; Prompt_Str db Please input a string: $ ;输入字符串提示信息Start: push cs pop ds push cs pop es ;使数据段、附加段与代码段同段 Output Prompt_Str ;提示输入字符串 lea dx,Buffer mov ah,0ah ;从键盘接受一串字符 int 21h CALL Enter_CTLF ;输出一个回车、换行 CALL Enter_CTLF ;输出一个回车、换行 cld lea si,Buffer1 ;实际输入的字符个数地址 mov cl,si ;读入实际输入的字符个数 test cl,0ffh jz Exit_Proc ;直接回车,没有输入任何字符,结束程序,返回操作系统 xor ch,ch ;cx=实际输入的字符个数 add si,cx ;字符串尾部地址 std ;置方向标志,使变址寄存器自动减量Disp_String:lodsb mov dl,al call Enter_Chr ;显示一个字符 loop Disp_StringExit_Proc: mov ah,4ch ;结束程序 int 21hBuffer db 100,?Code ENDS END Start ;编译到此结束从键盘输入一字符串(不超过255个字符)以相反顺序输出data segmenta db ? dup(?)data endseseg segmentb db ? dup(?)eseg endscode segmentassume cs:codestart:mov ah,0ahint 21hmov bl,allea si,alea di,badd di,n-1mov cx,nmove:cldlodsbstdstosbloop movemov ah,4chint 21hcode endsend start解答:data segment;a db ? dup(?)a db 255,0,255 dup(?)data endseseg segment;b db ? dup(?)b db 255 dup(?)eseg endscode segment;assume cs:codeassume cs:code,ds:data,es:esegstart:mov ax,data ;新增mov ds,ax ;mov ax,eseg ;mov es,ax ;mov dx,offset a ;学习0AH号DOS功能调用mov ah,0ahint 21h;mov bl,almov ch,0 ;mov cl,a+1 ;lea si,alea si,a+2lea di,b;add di,n-1add di,cxdec di;mov cx,nmove:cldlodsbstdstosbloop movemov ah,4chint 21hcode endsend start;输入字符串去空格后反向输出的程序.modelsmall.386DATASEGMENTbufdb100,0,100DUP(0)msg1dbPleaseinputastring:,0DH,0Ah,$crlfdb0Dh,0Ah,$lengdb0DATAENDSSTACKSEGMENTDB64DUP(?)STACKENDSCODESEGMENTassumecs:CODE,ds:DATA,es:DATA,ss:STACKSTART:movax,DATAmovds,axmoves,axleadx,msg1;输出提示文字movah,09hint21hleadx,bufmovah,0ah;接受字符串int21h;movdx,offsetcrlfmovah,09h;输出字符串中断int21hcallcountcallnospace;把这行去掉之后是可以实现反向输出的,当然不能去空格leadx,bufmovbl,leng;新字符串长度送到blmovbh,00hcmpbx,0000hjnzL1jzEXITL1:movdl,buf+1bx;把最后一位送到dlmovah,02h;输出一个字符中断int21hdecbx;倒着输出字符jnzl1EXIT:movAH,4CHint21Hcount:xordx,dxxorcx,cxleadi,bufpushdimoval,0lop:cmpal,dijedoneincdlincdilooplopdone:movleng,dl;把数组长度存至lengpopdiretnospace:pushsipushdipushaxpushbxpushcxleasi,bufaddsi,2;读指针simovdi,si;写指针dixorch,chmovcl,si-1;字符数组长度cldxorbl,bl;新的字符长度L2:lodsb;读取字符cmpal,jeL3;如果是空格,跳过保存操作stosb;保存字符incbl;记录长度L3:loopL2movleng,blpopcxpopbxpopaxpopdipopsiretCODEENDSENDSTART字符串逆序输出data segment string db 100,?,100 dup(0)data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax lea dx,string mov ah,0ah int 21h lea bx,string+1 mov cl,bx mov ch,0 add bx,cx next:mov dl,bx mov ah,2 int 21h dec bx loop next mov ah,4ch int 21hcode ends end start提示一下,小写跟大写字母的ASCII码值就差32,例如a=97=61h,A=41h=65,所以只要将小写字母-20h即可,先简单写个,没运行,参考一下吧MOV DX,DATAMOV DS,DXLEA DX,BUFMOV AH,0AHINT 21HMOV DI,OFFSET BUFMOV CL,DI+1XOR CH,CHADD DI,2NEXT:CMP DI,a JB NEXT1 CMP DI,z JA NEXT1 SUBB DI,20H INC DINEXT1:LOOP NEXT MOV DI,OFFSET BUF MOV CL,DI+1 XOR CH,CH ADD DI,2 ADD DI,CX-1DISP:MOV DL,DI MOV AH,2 INT 21H INC DI LOOP DISP利用10号功能调用从键盘输入长度为8的字符串,回车键结束,然后将其逆序输出DATA SEGMENTBUF DB 8 DB ? DB 8 DUP(0)DATA ENDSCODE SEGMENT ASSUME
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 智能马桶清洁创新创业项目商业计划书
- 幼儿玩教具设计与教学方案
- 汽车多功能座椅设计创新创业项目商业计划书
- 网络课程销售创新创业项目商业计划书
- 7.25省考试题及答案
- 采购部门岗位职责标准汇编
- 部编版七年级语文上册第一单元知识梳理
- 关于春节安全通知模板锦集10篇
- 清晖园简介教学课件
- 初二学生梦想主题演讲范文20篇
- 2022丹江口财政局事业单位考试真题
- 惠州卫生职业技术学院工作人员招聘考试真题2022
- 高中英语新课标3500个词汇
- 保安服务报价明细表
- 市场监督管理局企业注册、经营范围登记规范表述:行业分类及条目代码
- GA 802-2019道路交通管理机动车类型
- TSG-G0001-2012《锅炉安全技术监察规程》
- 初中数学几何1000题专项训练(含详解分析)-最新
- 《组织行为学》(MBA)课件
- HG20615-RF法兰标准尺寸
- 儿科常见疾病双向转诊指南
评论
0/150
提交评论