实验11的代码,自己敲的
感觉代码有点混乱,跳转比较多,还好我都做了注释了,方便大家assume cs:code
data segment
db "Beginner's All-purpose Symbolic Instrution Code.",0
data ends
code segment
start: mov ax,data
mov ds,ax
mov si,0
mov bx,0
mov cx,0
call letter
mov ax,4c00h
int 21h
letter: mov bl, ; 把si的内容给bl
mov cl, ; 把si的内容给cl,判断cx是不是为0
cmp bl,30h ;最近新学的判断指令,主要判断bl是不是大与30,因为标点符号的ASCII码都小于30H
jna s ; CF为1就跳转到S去
and bx,11011111b ;把字母转换成大写的关键
mov ,bl ;把转换成大写的字母,再放回原来的内存中
inc si
loop letter ;这是循环,所以才有了上面的mov cl,,不然一开始cx=0就不会循环了
ok: ret ;这是和call配套的,就是转移到call的下面的代码去执行
s: mov ,bl ;CF为1就跳过来执行,把标点符号直接原样复制到里面
inc si
jcxz ok
jmp short letter
code ends
end start
这个要研究一下 看看老帖,支持下
页:
[1]