汇编小题目

;程序功能:将数据段中的小写字母变成大写
;方法1:直接寻址
assume cs:code,ds:data
data segment
db 'ibm',13 dup(' ')
db 'dec',13 dup(' ')
db 'dos',13 dup(' ')
db 'var',13 dup(' ')
data ends

code segment
start:
   mov ax,data
   mov ds,ax
   mov bx,0
   mov dx,5

   s:
    mov cx,3
   
    s0:
     mov al,ds:[bx]
     and al,11011111b
     mov ds:[bx],al
     add bx,1
    loop s0
     
    add dx,-1
    mov cx,dx
    add bx,13 
   loop s
  
   mov ah,4ch
   int 21h
code ends
end start

;方法2:运用堆栈和bx+si寻址
assume cs:code,ds:data,ss:stack
data segment
db 'ibm',13 dup(' ')
db 'dec',13 dup(' ')
db 'dos',13 dup(' ')
db 'var',13 dup(' ')
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:
   mov ax,stack
   mov ss,ax
   mov sp,16
   mov ax,data
   mov ds,ax
   mov bx,0
   mov cx,4
  
   s0:
    push cx
    mov si,0
    mov cx,3
   
    s:
     mov al,[bx+si]
     and al,11011111b
     mov[bx+si],al
     inc si
    loop s
   
    add bx,16   
    pop cx
   
   loop s0
  
   mov ah,4ch
   int 21h
  
code ends
end start
;方法3:利用堆栈直接寻址
assume cs:code,ds:data,ss:stack
data segment
db 'ibm',13 dup(' ')
db 'dec',13 dup(' ')
db 'dos',13 dup(' ')
db 'var',13 dup(' ')
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:
   mov ax,data
   mov ds,ax
   mov ax,stack
   mov ss,ax
   mov sp,16
   mov bx,0
   mov cx,4

   s:
    push cx
    mov cx,3
   
    s0:
     mov al,ds:[bx]
     and al,11011111b
     mov ds:[bx],al
     add bx,1
    loop s0
     
    pop cx
    add bx,13 
   loop s
  
   mov ah,4ch
   int 21h
code ends
end start  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值