其实做了半天,其中遇到了好多错误,不过发现add指令运算时可以直接对地址进行操作,不过,要加上byte ptr哈我就是没有加。改了好久。
还有就是要注意的是jcxz指令是当cx=0时才跳转,不等于零继续向下
assume cs:codesg
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin: mov ax,datasg
mov ds,ax
mov si,0
call letterc
mov ax,4C00h
int 21h
letterc:
push ax
push bx
push ds
push si
push cx
mov al,97
mov bl,122
mov cx,0
X: cmp ds:[si],al
jb N
cmp ds:[si],bl
ja N
; sub ds:[si],32
; mov al,ds:[si]
; and al,11011111b
; mov ds:[si],al
and byte ptr ds:[si],11011111b
N: inc si
mov cl,ds:[si]
cmp cl,0
jne X
pop cx
pop si
pop ds
pop bx
pop ax
ret
codesg ends
end begin