汇编: 更灵活的定位内存地址的方法

本文深入探讨了8086汇编语言的基本概念,包括bx、si和di作为偏移地址寄存器的使用,展示了如何通过这些寄存器定位内存地址。此外,文章还介绍了双层循环的应用,以及如何在汇编语言中进行字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  bx是偏移地址寄存器。同样的, si,di也是偏移地址寄存器。 这样使用了si,di可以更灵活的定位内存地址。

assume  cs:code


code segment
       
     start: mov bx,0
            mov si,0
            mov ax,ds:[si]
            
            inc si
            mov ax,ds:[bx+si]

            mov di,0
            mov ax,ds:[bx+di]
            mov al,ds:[bx+5]
             
    
code ends

end start

  

  

assume cs:code, ds:data

data segment
  db 'PYTHON'
  db 'javasc'

data ends


code segment

  start:  mov ax,data
          mov ds,ax
          mov cx, 6
          mov bx,0

cgeLtr:   mov al,ds:[bx]
          or al, 00100000B
          mov dl,ds:[bx+6]
          and dl,11011111B
          mov ds:[bx], al
          mov ds:[bx+6],dl
          inc bx          
          loop cgeLtr

         mov ax,4C00H
         int 21H
  
code ends

end start

   双层循环

assume cs:code, ds:data, ss:stack

data segment
    ;'0123456789abcdef' 
  db '1. abc          '
  db '2. def          '
  db '3. ghi          '
  db '4. lmn          '
data ends

stack segment
  dw 0,0,0,0,0,0,0,0
stack ends

code segment
   
    start: mov ax, stack
           mov ss, ax
           mov sp, 16

           mov ax, data
           mov ds, ax
                     
           mov cx,4
           mov bx,0

   cge:      push cx
                    
             mov cx, 3
             mov si,0
      
      row:   mov al, ds:[bx+si+3]
             and al, 11011111B
             mov ds:[bx+si+3], al
             inc si
             loop row

           add bx,16
           pop cx
           loop cge

       
       mov ax, 4C00H
       int 21H
code ends

end start

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值