汇编语言(王爽)学习记录_第七章

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

and和or命令

and指令,逻辑与运算

mov al,01100011B

and  al,00111011B

 执行后:al = 00100011B

通过and指令可以设相应位为0:

               将al的第6位设0:and al,10111111B

               将al的第7位设0:and al,01111111B

               将al的第0位设0:and al,11111110B

or指令,逻辑或运算

mov al,01100011B

or    al,00111011B

执行后:al=01111011B

通过or指令可以设相应位为1:

               将al的第6位设0:or al,01000000B

               将al的第7位设0:or al,10000000B

               将al的第0位设0:or al,00000001B

大小写的转换

通过ASCII码的二进制对比:

大写 十六进制 二进制 小写 十六进制 二进制
A 41 01000001 a 61 01100001
B 42 01000010 b 62 01100010
C 43 01000011 c 63 01100011
D 44 01000100 d 64 01100100
E 45 01000101 e 65 01100101

大写与小写相差32(十进制)二进制第5位为0是大写,为1是小写。

将datasg中的第一个字符串转化为大写,第二个字符串转换为小写。利用and   or 命令进行大小写的转换:

DATAS SEGMENT     DB 'BaSic'     DB 'iNFOrMaTiOn' DATAS ENDS
CODES SEGMENT     ASSUME CS:CODES,DS:DATAS START:     MOV AX,DATAS     MOV DS,AX          MOV BX,0     MOV CX,5 S:  MOV AX,[BX]     AND AL,11011111B     MOV [BX],AL     INC BX     LOOP S
    MOV BX,5     MOV CX,11 S1: MOV AX,[BX]     OR AL,00100000B     MOV [BX],AL     INC BX     LOOP S1     MOV AH,4CH     INT 21H CODES ENDS     END START

汇编语言(王爽)学习记录_第七章

 

 SI和DI

si和di在8086CPU中功能和bx寄存器相近。si和di不能分为两个8字节的寄存器使用。

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

[data]用一个常数表示地址

[bx]用一个变量表示内存地址

[bx+data]或data[bx]或[bx].data用一个变量和常量表示地址,一个基础地址上用变量间接定位一个内存单元

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

[bx+di+data]两个变量和一个常量表示地址

上一篇:实验4 汇编应用编程和c语言程序反汇编分析


下一篇:灵活定位内存地址