and和or指令
“与”运算指令AND
格式:AND OP1,OP2
功能:对OP1、OP2按位相“与”
说明:常用于使指定位数置0的操作中。
1 | MOV AL,63H ;输入0110 0011 |
逻辑“或”指令OR
格式:OR OP1,OP2
功能:对OP1、OP2按位相“或”。
说明:通常用于使指定位数置1的操作。
举例:使AL中的最低两位置1。
1 | OR AL,03H |
ASCII码
在ASCII编码中,将常用的128个字符用八位二进制数(00000000—01111111)表示,其中最高一位为0。
| 符号 | 十进制范围 |
|---|---|
| 0~9 | 48~57 |
| A~Z | 65~90 |
| a~z | 97~122 |
以字符形式给出的数据
用一对单引号‘….’括起的内容作为字符处理
1 | data segment |
1 | mov bl,’b’ ;Mov bl, 62h |
大小写转换问题
补全程序,将DATA中的第一个字符串转化为大写,将第二个字符串转化为小写
1 | ASSUME CS:CODE,DS:DATA |
1 | Start: |
转换为大写可以
and 0dfh,转换成小写or 20h
[bx+idata]
MOV AX,[BX]
MOV AX,[BX+200]
用[bx+idata]方式处理数组
补全程序,将DATA中的第一个字符串转化为大写,将第二个字符串转化为小写。
1 | ASSUME CS:CODE,DS:DATA |
1 | Start: mov ax,data |
SI和DI
SI:源变址寄存器
DI:目的变址寄存器
SI和DI只能用作16位寄存器,常用于对内存单元的寻址,功能与BX寄存器相近。
用寄存器SI和DI实现字符串‘welcome to masm!’复制到它后面的数据区。
1 | assume cs:code,ds:data |
[bx+si]和[bx+di]
MOV AX,[BX+SI]
MOV AX,[BX][DI]
[bx+si+idata]和[bx+di+idata]
MOV AX,[BX+SI+100]
MOV AX,[BX+DI+100]
MOV AX,[BX+100+SI]
MOV AX,[BX+100+DI]