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

1、and和or指令

and指令:逻辑与指令,按位进行与运算

技巧:通过该指令可将操作对象的相应位设为0,其他位不变

or指令:逻辑或指令,按位进行或运算

技巧:通过该指令可将操作对象的相应位设为1,其他位不变

2、ASCII码

编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。

例:61H表示‘a’

3、以字符形式给出的数据

在汇编语言中,用‘……’的方式指明数据以字符形式给出。编译器将把它们转化成相应的ASCII值。

例:db ‘UnIX’

        mov al,‘a’

4、大小写的转换

ASCII码中小写字母与大写字母相差32(20H)。

例:a比A大32(20H)

5、[bx+idata]

表示一个内存单元,它的偏移地址为(bx)+idata (bx中的数值加上idata)

格式:

mov ax,[bx+idata]

mov ax,[idata+bx]

mov ax,200[bx]

mov ax,[bx].idata

6、用[bx+idata]的方法进行数组的处理

    mov ax,datasg ;datasg类似数组名
    mov ds,ax
    mov bx,0

    mov cx,5
  s:mov al,[bx]
    and al,1101111b
    mov [bx],al
    inc bx
    loop s

[bx+idata]的方式为高级语言实现数组提供了便利机制。

7、SI和DI

SI和DI是8086CPU中和bx功能相近的寄存器,但是SI和DI不能分成两个8位寄存器来使用。

例:ds:[bx]      ds:[SI]     ds:[DI]

codesg segment
    mov ax,datasg
    mov ds,ax
    mov si,0
    mov di,16
    mov cx,8
  s:mov ax,[si]
    mov [di],ax
    add si,2
    add di,2
    loop s
codesg ends

也可用[bx(si、di)+idata]的方式

8、[bx+si]和[bx+di]

格式:

      mov ax,[bx+si]

      mov ax,[bx][si]

9、[bx+si+idata]和[bx+di+idata]

格式:

      mov ax,[bx+si+idata]

      mov ax,idata[bx][si]

      mov ax,[bx].idata[si]

      mov ax,[bx][si].idata

10、不同寻址方式的灵活运用

[idata]用一个常量来表示地址,可用于直接定位一个内容单元

[bx]用一个变量来表示内存地址,可用于间接定位一个内存地址

[bx+idata]用一个变量和常量来表示地址,可在一个起始地址的基础上用变量间接定位一个内存单元

[bx+si]用两个变量来表示地址

[bx+si+idata]用一个常量和两个变量来表示地址

11、二重循环

在每次开始内循环时,将外层循环的CX的数值存起来,在执行外层循环loop前恢复外层循环的cx数值。

可用寄存器来临时保存cx中的数值,如果寄存器不够可以使用内存,推荐使用栈空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值