17066038 发表于 2016-8-6 17:27:58

汇编语言-实验11-代码分享

在编写的时候出现以下调试错误:
1、字符串中的单引号',造成编译错误,提前结束了字符串的定义
2、要用字节型比较,al,非axassume cs:code

data segment
db 'Beginner',39,'s All-purpose Symbolic Instruction Code.',0                       
data ends

stack segment
dw 16 dup(0)                        ;32B
stack ends

code segment
start:
        mov ax,stack
        mov ss,ax
        mov sp,32

        mov ax,data
        mov ds,ax               
        mov si,0
       
        call letterc

        mov ax,4c00h
        int 21h

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
letterc:
        ;参数:ds=要转换的字符串段地址,si=要转换的字符串的起始地址,字符串要以0结束
        ;返回值:将字符串转换为全大写,遇0结束转换

        ;此程序要求栈段的长度为32B

        push ds
        push si
        push ax

lt_chge:       
        mov al,ds:
        cmp al,0
        je lt_ok

        cmp al,61h
        jb lt_s
        cmp al,7ah
        ja lt_s
        sub al,20h
        mov byte ptr ds:,al
lt_s:        inc si
        jmp lt_chge

lt_ok:
        pop ax
        pop si
        pop ds
        ret
       
code ends
end start

天外飞mao 发表于 2016-8-7 14:55:25

看看看~
页: [1]
查看完整版本: 汇编语言-实验11-代码分享