您的位置:首页 > 其它

《汇编语言(第3版)》王爽 第十章实验

2016-12-18 17:04 274 查看
实验10 编写子程序 

1、显示字符串

assume cs:code
data segment
db 'Welcome to masm!',0
data ends

stack segment
dw 8 dup (0)
stack ends

code segment
start:  mov dh,20
mov dl,40
mov cl,2
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov si,0
call show_str

mov ax,4c00h
int 21h

     show_str:  push si
                push dx
                push cx

                mov ax,0b800h
                mov es,ax

                mov al,160
                dec dh
                mul dh
                mov bx,ax
                mov al,2
                dec dl
                mul dl
                add bx,ax

                mov di,0
                mov bp,cx
                mov si,0
           s1:  mov cl,[si]
                mov ch,0
                jcxz s2
                mov es:[bx+di],cl
                mov ax,bp
                mov es:[bx+1+di],al
                inc si
                add di,2
                jmp short s1

           s2:  
                pop cx
                pop dx
                pop si
                ret

code ends

end start

2、不产生溢出的除法运算

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

data segment
db 'welcome to masm!'
data ends

stack segment
dw 8 dup (0)
stack ends

code segment
start:  mov ax,4240h  ;L
mov dx,000fh  ;H
mov cx,0ah    ;N
call divdw

mov ax,4c00h
int 21h

divdw:  mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax

mov ax,bx
div cx

mov cx,dx
pop dx

ret
code ends

end start

3、显示十进制的字符串

assume cs:code

data segment
db 16 dup (0)
data ends

stack segment
dw 16 dup (0)
stack ends

code segment
start:  mov ax,65535
mov bx,data
mov ds,bx
mov si,0
call dtoc

mov dh,25
mov dl,70
mov cl,2
call show_str

mov ax,4c00h
int 21h

dtoc:  push ax

mov bp,0

s1:  mov dx,0
mov bx,10
div bx
mov cx,ax
mov bx,dx
jcxz s2
push bx
inc bp
jmp short s1

s2:  add bx,30h
mov [si],bl
inc si
mov cx,bp
jcxz s4
s3:  pop bx
add bx,30h
mov [si],bl
inc si
loop s3
s4:  mov bx,0
mov [si],bl

pop ax
ret

show_str:  push si
push dx
push cx

mov ax,0b800h
mov es,ax

mov al,160
dec dh
mul dh
mov bx,ax
mov al,2
dec dl
mul dl
add bx,ax

mov di,0
mov bp,cx
mov si,0
s5:  mov cl,[si]
mov ch,0
jcxz s6
mov es:[bx+di],cl
mov ax,bp
mov es:[bx+1+di],al
inc si
add di,2
jmp short s5

s6:
pop cx
pop dx
pop si
ret

code ends

end start
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息