《汇编语言》10.11节,写出一个大小写转换的程序,需要通过调用子程序。我优化了写法,并增加了屏显子程序以确认转换结果。离Forth系统的结构越来越近了,接下来是将堆栈作为参数传递接口。
org 0100h
start@:
call capital@ ;调用转换为大写字符子程序
call print@ ;调用屏显子程序
jmp $
mov ax,4c00h
int 21h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
print@: ;屏显子程序,将data区里的字符显示在屏幕上
mov ax,cs
mov ds,ax
mov bx,dataStart@
mov si,140h+30h
mov cx,dataEnd@-dataStart@
s@: mov dl,[bx]
mov dh,11001010b
mov ax,0b800h
mov ds,ax
mov [ds:si],dx
mov ax,cs
mov ds,ax
add bx,1
add si,2
loop s@
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
capital@: ;大小写转换子程序,将data区的字符全部转换成大写
mov ax,cs
mov ds,ax
mov si,dataStart@
mov cx,dataEnd@-dataStart@
cap@:
mov al,11011111b
and [si],al
inc si
loop cap@
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dataStart@: ;data区,存放要处理的数据
db 'Welcome to fasm!I am here!'
dataEnd@:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
阅读(1288) | 评论(0) | 转发(0) |