1. 首字母大写
ASSUME CS:code,DS:data
; 题目:data段中, 首字母大写
data SEGMENT
DB '1. welcome to ma'
DB '2. abc '
DB '3. Efg '
DB '4. mn '
data ENDS
code SEGMENT
start: mov ax,data
mov ds,ax
mov bx,0
mov si,3
mov cx,4
convertLetter:mov dl,ds:[bx+si]
and dl,11011111B
mov ds:[bx+si],dl
add bx,16
loop convertLetter
mov ax,4C00H
int 21h
code ENDS
END start
-u
0E28:0000 B8240E MOV AX,0E24
0E28:0003 8ED8 MOV DS,AX
0E28:0005 BB0000 MOV BX,0000
0E28:0008 BE0300 MOV SI,0003
0E28:000B B90400 MOV CX,0004
0E28:000E 8A10 MOV DL,[BX+SI]
0E28:0010 80E2DF AND DL,DF
0E28:0013 8810 MOV [BX+SI],DL
0E28:0015 83C310 ADD BX,+10
0E28:0018 E2F4 LOOP 000E
0E28:001A B8004C MOV AX,4C00
0E28:001D CD21 INT 21
0E28:001F 03D2 ADD DX,DX
-g 1A
AX=0E24 BX=0040 CX=0000 DX=004D SP=0000 BP=0000 SI=0003 DI=0000
DS=0E24 ES=0E14 SS=0E23 CS=0E28 IP=001A NV UP EI PL NZ NA PO NC
0E28:001A B8004C MOV AX,4C00
-d ds:0
0E24:0000 31 2E 20 57 65 6C 63 6F-6D 65 20 74 6F 20 6D 61 1. Welcome to ma
0E24:0010 32 2E 20 41 62 63 20 20-20 20 20 20 20 20 20 20 2. Abc
0E24:0020 33 2E 20 45 66 67 20 20-20 20 20 20 20 20 20 20 3. Efg
0E24:0030 34 2E 20 4D 6E 20 20 20-20 20 20 20 20 20 20 20 4. Mn
2. 每个字母都改为大写
ASSUME CS:code,DS:data,SS:stack
; 题目:data段中, 每个字母都改为大写
data SEGMENT
DB '1. wel '
DB '2. abc '
DB '3. Efg '
DB '4. xYz '
data ENDS
stack SEGMENT
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, stack
mov ss,ax
mov sp,32
mov ax,data
mov ds,ax
mov es,ax
mov bx,0
mov si,3
mov cx,4
upCol:push cx
push si
mov cx,3
mov si,3
upRow:mov dl, ds:[bx+si]
and dl,11011111B
mov es:[bx+si],dl
inc si
loop upRow
add bx,16
pop si
pop cx
loop upCol
mov ax,4C00H
int 21h
code ENDS
END start
-u
0E2A:0000 B8280E MOV AX,0E28
0E2A:0003 8ED0 MOV SS,AX
0E2A:0005 BC2000 MOV SP,0020
0E2A:0008 B8240E MOV AX,0E24
0E2A:000B 8ED8 MOV DS,AX
0E2A:000D 8EC0 MOV ES,AX
0E2A:000F BB0000 MOV BX,0000
0E2A:0012 BE0300 MOV SI,0003
0E2A:0015 B90400 MOV CX,0004
0E2A:0018 51 PUSH CX
0E2A:0019 56 PUSH SI
0E2A:001A B90300 MOV CX,0003
0E2A:001D BE0300 MOV SI,0003
-u
0E2A:0020 8A10 MOV DL,[BX+SI]
0E2A:0022 80E2DF AND DL,DF
0E2A:0025 26 ES:
0E2A:0026 8810 MOV [BX+SI],DL
0E2A:0028 46 INC SI
0E2A:0029 E2F5 LOOP 0020
0E2A:002B 83C310 ADD BX,+10
0E2A:002E 5E POP SI
0E2A:002F 59 POP CX
0E2A:0030 E2E6 LOOP 0018
0E2A:0032 B8004C MOV AX,4C00
0E2A:0035 CD21 INT 21
0E2A:0037 A38413 MOV [1384],AX
0E2A:003A 2E CS:
0E2A:003B 8E1E0000 MOV DS,[0000]
0E2A:003F 06 PUSH ES
-g 32
AX=0E24 BX=0040 CX=0000 DX=005A SP=0020 BP=0000 SI=0003 DI=0000
DS=0E24 ES=0E24 SS=0E28 CS=0E2A IP=0032 NV UP EI PL NZ NA PO NC
0E2A:0032 B8004C MOV AX,4C00
-d es:0
0E24:0000 31 2E 20 57 45 4C 20 20-20 20 20 20 20 20 20 20 1. WEL
0E24:0010 32 2E 20 41 42 43 20 20-20 20 20 20 20 20 20 20 2. ABC
0E24:0020 33 2E 20 45 46 47 20 20-20 20 20 20 20 20 20 20 3. EFG
0E24:0030 34 2E 20 58 59 5A 20 20-20 20 20 20 20 20 20 20 4. XYZ
0E24:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
3. 不通过寄存器来确定数据的长度
; mov word ptr ds:[0],1 ; 将1当做字型数据放到ds中
-d ds:0
2000:0000 11 22 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
-a
0DC0:0105 mov word ptr [0],3344
0DC0:010B
-r
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=0105 NV UP EI PL NZ NA PO NC去11
0DC0:0105 C70600004433 MOV WORD PTR [0000],3344 DS:0000=2211
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=010B NV UP EI PL NZ NA PO NC
0DC0:010B 0000 ADD [BX+SI],AL DS:0000=44
-d ds:0
2000:0000 44 33 00 00 00 00 00 00-00 00 00 00 00 00 00 00 D3..............
; inc word ptr ds:[bx]
-a
0DC0:010B inc word ptr [bx]
0DC0:010D
-d ds:0 F
2000:0000 44 33 00 00 00 00 00 00-00 00 00 00 00 00 00 00 D3..............
-r
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=010B NV UP EI PL NZ NA PO NC
0DC0:010B FF07 INC WORD PTR [BX] DS:0000=3344
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=010D NV UP EI PL NZ NA PO NC
0DC0:010D 0000 ADD [BX+SI],AL DS:0000=45
-d ds:0 F
2000:0000 45 33 00 00 00 00 00 00-00 00 00 00 00 00 00 00 E3..............
; mov byte ptr ds:[0],11 ; 将11当做字节型数据放到dl中
; inc byte ptr ds:[0] ; 自增1
-a
0DC0:010D mov byte ptr [0],11
0DC0:0112 inc byte ptr [0]
-r
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=010D NV UP EI PL NZ NA PO NC
0DC0:010D C606000011 MOV BYTE PTR [0000],11 DS:0000=45
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=0112 NV UP EI PL NZ NA PO NC
0DC0:0112 FE060000 INC BYTE PTR [0000] DS:0000=11
-d ds:0 F
2000:0000 11 33 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .3..............
-t
AX=2000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=2000 ES=0DC0 SS=0DC0 CS=0DC0 IP=0116 NV UP EI PL NZ NA PE NC
0DC0:0116 0000 ADD [BX+SI],AL DS:0000=12
-d ds:0 F
2000:0000 12 33 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .3..............
4. 综合运用
ASSUME CS:code,DS:data,SS:stack
; 题目:
; 公司名:'DEC'
; 总裁名:'Ken Olsen'
; 排名:137 改为:138
; 收入:40 改为:70
; 著名产品:'PDP' 改为:'VAX'
data SEGMENT
DB 'DEC'
DB 'Ken Olsen' ; 前面有12字节
DW 137 ; 0089 ; 位置是 12
DW 40 ; 0028 ; 前面一个字, 位置是 14
DB 'PDP' ; 前面一个字, 位置是 16
data ENDS
stack SEGMENT
DB 128 dup(0) ; 8x16行0
stack ENDS
code SEGMENT
start:mov ax, stack
mov ss,ax
mov sp,128
mov ax,data
mov ds,ax
mov es,ax
mov bx,0
mov si,0
mov word ptr ds:[bx+12],138
mov word ptr ds:[bx+14],70
mov byte ptr ds:[bx+si+16],'V'
inc si
mov byte ptr ds:[bx+si+16],'A'
inc si
mov byte ptr ds:[bx+si+16],'X'
mov ax,4C00H
int 21h
code ENDS
END start
-d ds:0 2F
0E24:0000 44 45 43 4B 65 6E 20 4F-6C 73 65 6E 89 00 28 00 DECKen Olsen..(.
0E24:0010 50 44 50 00 00 00 00 00-00 00 00 00 00 00 00 00 PDP.............
-d ds:0
0E24:0000 44 45 43 4B 65 6E 20 4F-6C 73 65 6E 8A 00 46 00 DECKen Olsen..F.
0E24:0010 56 41 58 00 00 00 00 00-00 00 00 00 00 00 00 00 VAX.............