第七章-更灵活定位内存地址

本文介绍了汇编语言中and和or指令的使用,它们分别用于将指定位设置为0和1。接着讲解了ASCII码作为字符编码的基础。然后展示了如何以字符形式存储数据并进行大小写转换。此外,还详细阐述了不同寻址方式,如[bx+idata],在处理数组和内存地址中的应用。最后,讨论了SI和DI寄存器在内存访问中的角色,以及各种寻址模式的灵活运用。
摘要由CSDN通过智能技术生成

7.1 and和or指令

定义:略

and指令的一些功能

  • 通过该指令将操作对象的相应位设为0,其他位不变。
and al,01111111 ;将第8位设置为0

or指令的一些功能

  • 通过该指令将操作对象的相应位设为1,其他位不变。
and al,010000000 ;将第7位设置为1

7.2关于ASCII码

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

7.3以字符形成给出数据

db 'unIX'

7.4大小写转换问题

  • 小写字母的ASCII码值比大写字母的大20H。十进制是32
  • 若是二进制大小写只有一位的区别,0和1
assume cs:codesg, ds:datasg

datasg segment
	db 'BaSiC'
	db 'MinIX'
datasg ends

codesg segment
start:
	mov ax,datasg
	mov ds,ax
	mov bx,0
	
	mov cx,5
S:	mov al,[bx]
	and al,11011111b
	mov [bx],al
	inc bx
	loop s
	
	mov bx,5
	mov cx,5
s0: mov al,[bx]
	or al,00100000b
	mov [bx],al
	inc bx
	loop s0
	
codesg ends
end start

7.5[bx+idata]

mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200

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

assume cs:codesg, ds:datasg

datasg segment
	db 'BaSiC'
	db 'MinIX'
datasg ends

codesg segment
start:
	mov ax,datasg
	mov ds,ax
	mov bx,0
	
	mov cx,5
S:	mov al,[bx]
	and al,11011111b
	mov [bx],al
	mov al,[5+bx]
	or al,00100000b
	mov [5+bx],al
	inc bx
	loop s
	
codesg ends
end start

7.7SI和DI

  • SI和DI和BX相似,但是不能拆成两个8位寄存器
mov bx,0
mov ax,[b]

mov si,0
mov ax,[si]

mov di,0 
mov di,[di]
mov bx,0
mov ax,[b+1]

mov si,0
mov ax,[si+1]

mov di,0
mov ax,[di+1]

7.8[bi+si]和[bi+di]

mov ax,[bx+si]
#或者
mov ax,[bx][si]

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

偏移地址为:[bx+di+idata]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值