简介 :
设计一个程序 :
data segment
db "Hello world"
db 11 dup(0)
data ends
将第一个字符串中的所有字符转换为大写字符 , 并对应地保存在下面的内存单元中
要求使用子程序设计的思想 , 小写转大写作为一个子程序进行设计
代码 :
assume cs:code,ds:data,ss:stack
data segment
db "HelloASM"
db 8 dup(0)
data ends
stack segment
db 16 dup(0)
stack ends
code segment
start:
; 初始化数据段寄存器
mov ax, data
mov ds, ax
; 初始化栈段寄存器
mov ax, stack
mov ss, ax
; 初始化栈偏移地址寄存器
mov sp, 00A0H
; 准备循环 , 设置循环次数
mov cx, 0008H
; 初始化指向字符的寄存器
mov si, 0
mov di, 0
my_loop:
mov bl, ds:[si]
call upper
mov ds:[di + 8], bl
inc si
inc di
loop my_loop ; 注意循环结束后一定要跳到正常结束程序的 finish 标号
; 否则 upper 还会执行一次 , 这样程序就会错乱
jmp finish
; 功能 : 将一个小写字符转换为大写字符
; 参数 : bl
; 返回 : bl
upper:
and bx, 11011111B ; 转大写
ret
finish:
mov ax,4cH
int 21H
code ends
end start