1. AND OR
ASSUME CS:code,DS:data,SS:stack
data SEGMENT
DB 'ABcDEF'
DB 'GhiJkm'
data ENDS
stack SEGMENT stack ; 注意这里再写一次 stack
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
stack ENDS
code SEGMENT
start:
mov ax, data
mov ds, ax
mov ax, data
mov es, ax
mov cx,6
mov bx,0
toSmall:mov dl, ds:[bx]
or dl,00100000B (20H)
mov es:[bx],dl
inc bx
loop toSmall
mov cx,6
mov bx,6
toBig: mov dl, ds:[bx]
and dl,11011111B (DFH)
mov es:[bx],dl
inc bx
loop toBig
mov ax,4C00H
int 21h
code ENDS
END start
; or 逻辑或运算,二进制位都为0时,才为0,否则为1
; and 逻辑与运算,二进制位都为1时,才为1,否则为0
; 65 41H A 0100 0001
; or 0010 0000 ; 将字符的第五位转换成1,即可将大写转换成小写字母
; 97 61H a 0110 0001
; or 0010 0000
; 0110 0001 ; 小a不变
; 66 42H B 0100 0010
; or 0010 0000
; 98 62H b 0110 0010
; or 0010 0000
; 0110 0010 ; 小b不变
; 99 63H c 0110 0011
; or 0010 0000
; 0110 0011
; 108 6CH i 0110 1001
; and 1101 1111 ; 将字符的第五位转换成0,即可将小写转换成大写字母
; 73 49H I 0100 1001
; and 1101 1111
; 0100 1001
; 97(a) - 65(A) = 32 = 20H
; 'A' + 20H = 'a'
; 总结:
; or: 0010 0000 非第5位,对面位是 0 or 之后还是 0, 对面是 1 or 之后还是 1
; 第5位, 对面是0转1,对面是1不变
; and: 1101 1111 非第5位,对面位是 0 and 之后还是 0, 对面是 1 and 之后还是 1
; 第5位, 对面是1转0,对面是0不变
2. 字符型数据定义
ASSUME CS:code,DS:data,SS:stack
data SEGMENT
DB 'hello tom'
data ENDS
stack SEGMENT stack ; 注意这里再写一次 stack
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
DW 0,0,0,0,0,0,0,0
stack ENDS
code SEGMENT
start:
mov ax, data
mov ds, ax
mov ax, stack
mov ss,ax
mov al,'a'
mov dl,'b'
mov ax,4C00H
int 21h
code ENDS
END start
-d ds:0
0E24:0000 68 65 6C 6C 6F 20 74 6F-6D 00 00 00 00 00 00 00 hello tom.......
0E24:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E24:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E24:0030 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E24:0040 00 00 00 00 00 00 00 4C-00 00 0D 00 29 0E 21 08 .......L....).!.
0E24:0050 B8 24 0E 8E D8 B8 25 0E-8E D0 B8 00 4C CD 21 03 .$....%.....L.!.
0E24:0060 D2 26 8B 3E 4E 13 8C D8-83 FF 00 74 1D 8E DF 8B .&.>N......t....
0E24:0070 36 04 00 8B 3E 00 00 03-F6 74 ED 8B 5C 0E E8 12 6...>....t..\...
-d ss:0
0E25:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E25:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E25:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
0E25:0030 00 00 00 00 00 00 00 4C-00 00 0D 00 29 0E 21 08 .......L....).!.
0E25:0040 B8 24 0E 8E D8 B8 25 0E-8E D0 B8 00 4C CD 21 03 .$....%.....L.!.
0E25:0050 D2 26 8B 3E 4E 13 8C D8-83 FF 00 74 1D 8E DF 8B .&.>N......t....
0E25:0060 36 04 00 8B 3E 00 00 03-F6 74 ED 8B 5C 0E E8 12 6...>....t..\...
0E25:0070 0B 73 07 83 EE 02 75 F3-EB DE 8B DA 03 1E 06 00 .s....u.........