王爽《汇编语言》学习笔记--第七章

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

7.1 AND和OR指令

(1)and指令:逻辑与指令,按位进行与运算。通过该指令可以将操作对象的相应位设为0.

如:

将AL的第3位设为0:AND AL,11110111B

将AL的第0位设为0:AND AL,11111110B

(2)or指令:逻辑或指令,按位进行或运算。通过该指令可以将操作对象的相应位设为1.

如:

将AL的第3位设为0:AND AL,00001000B

将AL的第0位设为0:AND AL,00000001B

7.2关于ASCII码

7.3 以字符形式给出的数据

实例:

assume ds:data

data segment
	db 'unIX'
	db 'foRK'
data ends

code segment
	
start:
	mov al,'a'
	mov bl,'b'
	
	mov ax,4c00h
	int 21h
code ends


DS=0B8E,所以程序从0B9E段开始,中间的部分为PSP段。

7.4 大小写转换的问题

assume cs:codesg,ds:datasg

datasg segment
	db 'BaSiC'
	db 'iNfOrMaTiOn'
datasg ends

codesg segment
	start: mov ax,datasg
		   
		   mov ds,ax   ;ds指向datasg段
		   
		   mov bx,0    ;ds:bx指向'BaSiC'的第一个字母
		   
		   mov cx,5    ;循环次数为5,'BaSiC'有5个字母
		   
		 s:mov al,[bx] ;将ASCII码从ds:bx所指向的单元中取出
		  
		   and al,11011111b ;将al中的ASCII码的第五位变为0,即变为大写字母
		   
		   mov [bx],al ;将转变后的ASCII码写会原单元
		   
		   inc bx    ;(bx)+1,ds:bx指向下一个字母
		   
		   loop s 
		   
		   mov bx,5  ;将(bx)设为5,ds:bx指向'iNfOrMaTiOn'的第一个字母
		   
		   mov cx,11 ;设置循环次数11,因为'iNfOrMaTiOn'有11个字母
		   
		s0:mov al,[bx]
		   
		   or al,00100000b ;将al中ASCII码的第五位设为1,变为小写字母
		   
		   mov [bx],al
		   
		   inc bx
		   loop s0
		   
		   mov ax,4c00h
		   int 21h
		   
codesg ends
end start

7.5 [bx+idata]

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

assume cs:codesg,ds:datasg

datasg segment
	db 'BaSiC'
	db 'iNfOrMaTiOn'
datasg ends

codesg segment
	start: mov ax,datasg
		   
		   mov ds,ax   ;ds指向datasg段
		   
		   mov bx,0    ;ds:bx指向'BaSiC'的第一个字母
		   
		   mov cx,5    ;循环次数为5,'BaSiC'有5个字母
		   
		 s:mov al,[bx] ;将ASCII码从ds:bx所指向的单元中取出
		  
		   and al,11011111b ;将al中的ASCII码的第五位变为0,即变为大写字母
		   
		   mov [bx],al ;将转变后的ASCII码写会原单元
		   
		   mov al,[5+bx]  ;定位第二个字符串
		   
		   or al,00100000b
		   
		   mov [5+bx],al
		   
		   inc bx
		   
		   loop s 
		   		   
		   mov ax,4c00h
		   int 21h
		   
codesg ends
end start

7.7 SI和DI

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


 

 

7.8  [bx+si]、[bx+di]

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

这两种为更灵活的寻址方式

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

你可能感兴趣的:(汇编语言学习笔记)