首页 > 编程知识 正文

汇编语言输出一个字符串,编程英文单词是什么

时间:2023-05-06 17:13:24 阅读:263832 作者:2904

编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上

题目:
编程,将DATAS段中的每个单词的前4个字母改为大写并将改写后的结果分4行输出到屏幕上。

DATAS SEGMENT

db '1. display $'db '2. brows $'db '3. replace $'db '4. modify $'

DATAS ENDS

STACKS SEGMENT

dw 0,0,0,0,0,0,0,0

STACKS ENDS

方案一:

DATAS SEGMENTst1 db '1. display $' db '2. brows $' db '3. replace $' db '4. modify $'DATAS ENDSSTACKS SEGMENT dw 0,0,0,0,0,0,0,0STACKS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART: MOV AX,DATAS MOV DS,AX mov ax,STACKS mov ss,ax mov sp,16 mov cx,4 ;有4行字符串要改写 mov bx,0 ;字符串的起始地址 s2: push cx ;保存外层循环的cx mov cx,4 ;要修改4个字符 mov si,3 ;从字符串的第4个字符开始改写s0: mov al,[bx+si] ;取出字符 and al,11011111b ;改成大写 mov [bx+si],al ;改写后的字符存回去 inc si loop s0 pop cx ;恢复外层循环的cx add bx,14 ;下一行字符串的首地址 loop s2 mov dx,offset st1 mov cx,4s1: mov ah,09 int 21h add dx,14 push dx ;保存dx的值,因为下面要输出一个换行符,会改变dx的当前值 mov dl,10 mov ah,02 int 21h ;输出一个换行符 pop dx ;恢复dx的值 loop s1 MOV AH,4CH INT 21HCODES ENDS END START

方案二:

DATAS SEGMENT st1 db '1. display $' db '2. brows $' db '3. replace $' db '4. modify $'datas endsstacksg segment dw 0,0,0,0,0,0,0,0stacksg endscodesg segmentassume cs:codesg,ds:datas,ss:stacksgstart: mov ax,stacksg mov ss,ax mov sp,16 mov ax,datas mov ds,ax mov bx,0 mov cx,4 s0:push cx mov si,0 mov cx,4 s:mov al,[bx+si+3] and al,11011111b mov [bx+si+3],al inc si loop s add bx,14 pop cx loop s0 mov dx,offset st1 mov cx,4 s1:mov ah,09 int 21h add dx,14 push dx mov dl,10 mov ah,02 int 21h pop dx loop s1 mov ah,4ch int 21hcodesg endsend start

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。