回 帖 发 新 帖 刷新版面

主题:请教高手,在线等急用~

[em10]设置两个八位二进制变量N1,N2,编写程序,将N1的高4位(做高4位),N2的低4位,拼成一个新的字节,并在屏幕上显示

回复列表 (共1个回复)

沙发


.model tiny

.code
            org        100H
_main:
            jmp     _start
    N1      db      12H
    N2      db      34H
_start:
        mov     ah, N1
        mov     al, N2
        and     ax, 1111000011110000B
        mov     cl, 4
        shr     ah, cl
        or      al, ah
        xor     ah, ah
        mov     cx, 10  ;以 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

我来回复

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