zzxxcc89 发表于 2011-7-25 15:27:43

实验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

Be_envious 发表于 2011-7-26 09:27:11

这个要研究一下

Cocol 发表于 2013-7-2 11:03:51

看看老帖,支持下
页: [1]
查看完整版本: 实验11的代码,自己敲的