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

7.1 and 和or 指令

  1. and指令 (al=01100011B)
  • 逻辑与指令,按位进行与运算。
  • 通过该指令可将操作对象的相应位设为0, 其他位不变。
  • 在这里插入图片描述
  1. or指令
  • 逻辑或指令, 按位进行或运算
  • 通过该指令可将操作对象的相应位设为1, 其他位不变。
  • 在这里插入图片描述

7.2 关千ASCII 码

7.3 以字符形式给出的数据

  1. 我们可以在汇编程序中,用'……'的方式指明数据是以字符的形式给出的,编译器
    将把它们转化为相对应的ASCII 码。

7.4 大小写转换的问题

在这里插入图片描述

  • 可以看出,就ASCII 码的二进制形式来看,除第5 位(位数从0 开始计算)外,大写字母和小写字母的其他各位都一样。大写字母ASCII 码的第5 位(位数从0 开始计算)为0, 小写字母的第5 位为1 。这样,我们就有了新的方法,一个字母,我们不管它原来是大写还是小写,我们将它的第5 位置0, 它就必将变为大写字母;将它的第5 位置1 ,它就必将变为小写字母。在这个方法中,我们不需要在处理前判断字母的大小写。比如:对于“BaSiC” 中的“B"’ 按要求,它已经是大写字母了,不应进行改变,我们将它的第5 位设为0, 它还是大写字母,因为它的第5 位本来就是0 。
  • 利用andor指令
assume cs:code,ds:datasg
datasg segment
	db 'BaSiC'
	db 'INforMatioN'
datasg ends

code segment
start:
	mov ax,datasg
	mov ds,ax
	mov cx,5
	mov bx,0
s0: mov al,[bx]
	and al,11011111b
	mov [bx],al
	inc bx
	loop s0
	;mov bx,5
	mov cx,11
s1: mov al,[bx]
	or al,00100000b
	mov [bx],al
	inc bx
	loop s1
	mov ax,4c00h
	int 21h
code ends
end start

7.5 [bx+idata]

  • [bx+idata]表示一个内存单元,它的偏移地址为(bx)+idata(bx 中的数值加上idata) 。
  • 在这里插入图片描述

7.6 用[bx+idata] 的方式进行数组的处理

在这里插入图片描述

7.7 SI 和DI

  • SI 和DI 不能够分成两个8 位寄存器来使用

7.8 [bx+si]和[bx+di]

  • 基址变址法
  • 注:mov ax,[bx+si]等同于mov ax,[bx][si]

7.9 [bx+si+idata] 和[bx+di+idata]

在这里插入图片描述

7.10 不同的寻址方式的灵活应用

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值