吃屎哥 发表于 2013-9-6 16:34:11

实验11,作业,顺便把作业在DOS里显示下


下面是代码
assume cs:code,ds:data
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends

code segment
statr:
mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov si,0;data变量
mov di,0;显存变量

call ok;此CALL为把小写字母转换成大写字母
call ok1;此CALL为把DATA数据显示到DOS里

hold:
hlt
jmp hold
mov ax,4c00h
int 21h
ok:
push ax
push si


s:cmpbyte ptr ,0;判断是否为0,为0则结束大小写替换
je s0
cmp byte ptr ,61h
jb s1;低于61H则bx+1,继续下个字母检测是否是小写字母
cmp byte ptr ,86h
ja s1;高于86h则bx+1
mov al,ds:
and al,11011111b;转换成大写或者(sub al,20h)
mov ds:,al
inc si;si+1
jmp s;继续下个字母检测

s1:inc si
jmp s;继续下个字母检测

s0:pop si
pop ax
ret



;一下是显示在DOS里   
ok1: push ax
push si
push di
ok2:
cmpbyte ptr ,0
je OK3;为0则结束
mov ah,ds:
mov es:,ah
inc si
inc di
mov al,24h
mov es:,al
inc di
jmp ok2
OK3: pop di
pop si
pop ax
ret


code ends
end statr
页: [1]
查看完整版本: 实验11,作业,顺便把作业在DOS里显示下