7.《汇编语言》-王爽第三版学习笔记 更灵活的内存地址方法

  1. and指令: 逻辑与指令,按位进行 与 运算
    or 指令:逻辑或指令,按位进行 或 运算
mov al,01100011B
and al,00111011B    // al=00100011B

mov al,01100011B
or al,00111011B    // al=01111011B
  1. dw 指令 : 以字形式给出数据
    db 指令: 以字符形式给出数据

  2. 大小写转换:
    大写转换:ASCII 码的第五位置 0,即与 11011111B 做 与(and)操作
    小写转换:ASCII 码的第五位置 1,即与 00100000B 做 或(or)操作

  3. [bx + idata]

// (ax) = ( (ds)*16 + (bx) + 200 ) 
mov ax,200[bx]
mov ax,[bx].200
mov ax,[bx+200]      
  1. SI && DI
    SI DI 是 8086CPU中和 bx 功能相近的寄存器, si di 不能够分成两个8位寄存器来使用。

6.[bx+si+idata] && [bx+di+idata]

// (ax) = ( (ds)*16 + (bx) + (si) + 200 ) 
mov ax,[bx+si+200]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
  1. 一般来说,在需要暂存数据的时候,都应该使用栈。
assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment
    dw 0,0,0,0,0,0,0,0
stacksg ends

datasg segment
    db 'display         '
    db 'brows           '
    db 'replace         '
    db 'modify          '
datasg ends

codesg segment
start: mov ax,stacksg
       mov ss,ax
       mov sp,16

       mov ax,datasg
       mov ds,ax
       mov bx,0

       mov cx,4
   s0: push cx
       mov si,0
       mov cx,5

   s1: mov al,[bx+si]
       and al,11011111b
       mov [bx+si],al
       inc si
       loop s1

       add bx,16
       pop cx
       loop s0

       mov ax,4c00h
       int 21h

codesg ends

end start

你可能感兴趣的:(7.《汇编语言》-王爽第三版学习笔记 更灵活的内存地址方法)