将datasg段中每个单词的前4个字母改为大写字母。
这道题前面有类似的题目的解答,还是比较简单的。
assume cs:codesg,ss:stacksg,ds:datasg ↑
│stacksg segment █
│ dw 0,0,0,0,0,0,0,0 █
│stacksg ends █
│datasg segment █
│ db '1. display ' █
│ db '2. brows ' █
│ db '3. replace ' █
│ db '4. modify ' █
│datasg ends █
│codesg segment █
│ start:mov ax,stacksg █
│ mov ss,ax █
│ mov ax,datasg █
│ mov ds,ax ░
│ mov sp,16 ░
│ mov bx,0 ░
│
mov cx,4 ░
│ s0:push cx ░
│ mov si,3 ░
│ mov cx,4 █
│ s:mov al,[bx+si] █
│ and al,11011111b █
│ mov [bx+si],al █
│ inc si █
│ loop s █
│ pop cx █
│ add bx,16 █
│ loop s0 █
│ mov ax,4c00h █
│ int 21h █
│codesg ends █
│end start █
│
debug前
07E2:0000 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
07E2:0010 31 2E 20 64 69 73 70 6C-61 79 20 20 20 20 20 20 1. display
07E2:0020 32 2E 20 62 72 6F 77 73-20 20 20 20 20 20 20 20 2. brows
07E2:0030 33 2E 20 72 65 70 6C 61-63 65 20 20 20 20 20 20 3. replace
07E2:0040 34 2E 20 6D 6F 64 69 66-79 20 20 20 20 20 20 20 4. modify
07E2:0050 B8 E2 07 8E D0 B8 E3 07-8E D8 BC 10 00 BB 00 00 ................
07E2:0060 B9 04 00 51 BE 03 00 B9-04 00 8A 00 24 DF 88 00 ...Q........$...
07E2:0070 46 E2 F7 59 83 C3 10 E2-EA B8 00 4C CD 21 68 F0 F..Y.......L.!h.
debug后验证结果
07E3:0000 31 2E 20 44 49 53 50 6C-61 79 20 20 20 20 20 20 1. DISPlay
07E3:0010 32 2E 20 42 52 4F 57 73-20 20 20 20 20 20 20 20 2. BROWs
07E3:0020 33 2E 20 52 45 50 4C 61-63 65 20 20 20 20 20 20 3. REPLace
07E3:0030 34 2E 20 4D 4F 44 49 66-79 20 20 20 20 20 20 20 4. MODIfy