汇编语言作业 编程,将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 SEGMENT



   st1 db '1. display   $'



    db '2. brows     $'



    db '3. replace   $'



    db '4. modify    $'

datas ends

stacksg segment

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

stacksg ends



codesg segment

assume cs:codesg,ds:datas,ss:stacksg

start:

   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 21h

codesg ends

end start


DATAS SEGMENT

st1  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



CODES SEGMENT

    ASSUME CS:CODES,DS:DATAS,SS:STACKS

START:

    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,4

s1: 

    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 21H

CODES ENDS

    END START


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值