《汇编语言》——王爽第三版实验10

1. 显示字符串

在这里插入图片描述

assume cs:code, ds:data, ss:stack

data segment

    db 'Welcome to masm!', 0

data ends

stack segment

    db 16 dup (0)

stack ends

code segment

    start:  mov dh, 8
            mov dl, 3
            mov cl, 2

            mov ax, data
            mov ds, ax
            mov si, 0

            mov ax, stack
            mov ss, ax
            mov sp, 10h

            call show_str

            mov ax, 4c00h
            int 21h

 show_str:  push cx
            push dx

;列位置计算,放到di中
            mov al, 2
            mul dl
            sub ax, 2
            mov di, ax

;行位置计算,最后放到es中
            mov al, 10
            mul dh
            mov dx, ax
            mov ax, 1800h
            add ax, dx
            mov es, ax
            
;cx后面要用,把它给bl
            mov bp, 0
            mov bl, cl

   invoke:  mov ch, 0
            mov cl, ds:[si]
            jcxz ok
            mov byte ptr es:[bp][di], cl
            inc bp
            mov byte ptr es:[bp][di], bl
            inc bp
            inc si

            jmp short invoke

       ok:  pop dx
            pop cx
            ret 

code ends

end start

在这里插入图片描述

2. 解决除法溢出问题

在这里插入图片描述
暂且搁置。

3. 数值显示

在这里插入图片描述

assume cs:code, ds:data, ss:stack

data segment

    db 10 dup(0)

data ends

stack segment

    db 16 dup(0)

stack ends

code segment

    start:  
            mov ax, 12666
            mov bx, data
            mov ds, bx

            mov si, 0
            call dtoc

            mov dh, 8
            mov dl, 3
            mov cl, 2
            call show_str

            mov ax, 4c00h
            int 21h

     dtoc:  
            push ax
            push bx

            mov bx, 10

            mov bp, 0
            push bp
       hh:  mov dx, 0
            div bx

            mov cx, dx ;余数
            jcxz ll

            push cx ;将有效的cx全入栈
            jmp short hh

       ll:  pop cx ;将cx出栈
            jcxz kk
            add cx, 30h
            mov byte ptr ds:[si], cl
            inc si
            jmp short ll
            
       kk:  
            pop bx
            pop ax
            ret

 show_str:  push cx
            push dx

;列位置计算,放到di中
            mov al, 2
            mul dl
            sub ax, 2
            mov di, ax

;行位置计算,最后放到es中
            mov al, 10
            mul dh
            mov dx, ax
            mov ax, 1800h
            add ax, dx
            mov es, ax
            
;cx后面要用,把它给bl
            mov bp, 0
            mov bl, cl
            mov si, 0

   invoke:  mov ch, 0
            mov cl, ds:[si]
            jcxz ok
            mov byte ptr es:[bp][di], cl
            inc bp
            mov byte ptr es:[bp][di], bl
            inc bp
            inc si

            jmp short invoke

       ok:  pop dx
            pop cx
            ret 

code ends

end start

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CCPigSnail

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值