回 帖 发 新 帖 刷新版面

主题:寻找懂汇编的人啊,急!不然我考试要挂了

帮我做2道题,考试用的。。。。

1、编写程序计算1+3+....+19
注意,要用递加的方法,ADD AX,2  这种方法,ax和19比较,等于就退出循环,输出结果


2、查找给定的一段字符串(比如:ABcD)中的小写字母,并改成大写字母

用最简单的语句写,8086的

回复列表 (共6个回复)

沙发


;2006-1-5
;编写程序计算1+3+....+19
;注意,要用递加的方法,ADD AX,2  这种方法,ax和19比较,等于就退出循环,输出结果

.model tiny

.code
            org        100H
_main:
            xor        cx, cx
            mov        ax, 1
        @a:
            add        cx, ax
            add        ax, 2
            cmp        ax, 19
            jle        @a
            
            mov        ax, cx
            mov        cx, 10
            call    print

            mov        ax, 4C00H
            int        21H

print    proc ;提供多种进制的输出
        ;ax 存放要输出的数
        ;cx 存放进制形式 (2 <= 进制 <= 35)
    cmp    cx, 2    
    jl    _error_
    cmp    cx, 35
    ja    _error_
    push    bx    ;保存 bx
    push    dx    ;...
    sub    sp, 16    ;16 (2 * 8)个字节的临时变量
    mov    bx, sp  ;bx 指向变量地址
    xor    dx, dx
_loop:
    cmp    ax, 0
    jne    _next
    cmp    dx, 0
    je    _print
_next:
    div    cx
    cmp    dx, 9        ;比较余数是否大于 9
    ja    _than_nine
    add    dl, '0'
    jmp    _save_dl
_than_nine:
    add    dl, 'A' - 0AH    ;大于 9 的数转换处理
_save_dl:
    mov    ss:[bx], dl
    inc    bx
    cwd
    jmp    _loop
_print:
    dec    bx
_print_next:
    cmp    bx, sp
    jl    _end
    mov    dl, ss:[bx]
    mov    ah, 2
    int    21H
    dec    bx
    jmp    _print_next
_error_:
    xor    ax, ax    ;return false
    ret
_end:
    add    sp, 16    ;恢复堆栈
    pop    dx
    pop    bx
    
    mov    ax, 1    ;return true
    ret
print    endp
end    _main

板凳


;2006-1-5
;查找给定的一段字符串(比如:ABcD)中的小写字母,并改成大写字母

.model small

.data
test_data    db    'Hello World!', '$'
test_data_length    equ    $ - test_data

.code
_main:
            mov        ax, @data
            mov        ds, ax

            cld
            mov        si, offset test_data
            mov        cx, test_data_length
    @1:
            test    cx, cx
            jz        @2
            dec        cx
            lodsb
            cmp        al, 'a'
            jb        @1
            cmp        al, 'z'
            ja        @1
            sub        byte ptr [si - 1], 'a' - 'A'
            jmp        @1
    @2:
            mov        dx, offset test_data
            mov        ah, 9
            int        21H
            mov        ax, 4c00H
            int        21H
end _main

3 楼

他连感谢的话都没有啊

4 楼

来晚了,不好意思啊
谢谢erping了

5 楼


呵呵[em9]

6 楼

你要考试这还不会啊?  哈哈  可惜我也不会

我来回复

您尚未登录,请登录后再回复。点此登录或注册