da鹿 发表于 2017-6-2 11:15:34

汇编语言关于栈的使用问题(实验十)

实验十第一小题
assume cs:code,ds:data
data segment
       db 'welcome to masm!',0
data ends
code segment
   start: mov dh,8
            mov dl,3
            mov cl,2
            mov ax,data
            mov ds,ax
            mov si,0
            call show_str
            mov ax,4c00H
            int 21H
;=============================
   show_str:mov ax,0b800H
            mov es,ax
            mov al,0a0H
            dec dh
            mul dh
            mov bx,ax
            dec dl
            add dl,dl
            add bl,dl
            mov di,0
         
          s:push cx
            mov cl,ds:
            mov ch,0
            jcxz ok
            mov es:,cl
            pop cx
            mov es:,cl
            inc di
            add si,2
            jmp short s
         ok:ret
;===============================
code ends
end start











实验十第二小题
assume cs:code,ss:stack
stack segment
         dw 8 dup (0)
stack ends
code segment
   start:mov ax,4240h
         mov dx,000fh
         mov cx,0aH
         call divdw
         mov bp,sp
         mov ax,4c00H
         int 21H
;==========================
divdw:   push ax
         mov ax,dx
         mov dx,0
         div cx

         push ax
         sub bp,2
         mov ax,ss:
         div cx
         mov cx,dx
         pop dx
         ret
;============================
code ends
end start








实验十第三小题
assume cs:code,ds:data,ss:stack
data segment
       db 16 dup (0)
data ends
stack segment
       dw 16 dup (0)
stack ends
code segment
   start:mov ax,data
         mov ds,ax
         mov ax,stack
         mov ss,ax
         mov sp,32

         mov ax,12666
         mov si,0
         call dtoc
   
         mov dh,8
         mov dl,3
         mov cl,2
         call show_str

         mov ax,4c00H
         int 21H
;===================================
show_str:push dx
         push cx
         push si
         mov di,0
         mov bl,dh
         dec bl
         mov al,160
         mul bl
         mov bx,ax
         add dl,dl
         add bl,dl
         mov ax,0b800H
         mov es,ax
         mov al,cl
   show_s:mov ch,0
         mov cl,ds:
         jcxz show_ok
         mov es:,cl
         mov es:,al
         add di,2
         inc si
         loop show_s
show_ok:pop dx
         pop cx
         pop si
         ret
;====================================
    dtoc:push ds
         push ss
         push sp
         push ax      
         push si
         
       s:mov dx,0
         mov bx,10
         div bx
         mov cx,ax
         jcxz ok
         add dx,30H
         pop dx
         inc cx
         loop s
         
      s0:pop ds:
         inc si
         loop s0

      ok:pop si
         pop ax
         pop sp
         pop ss
         pop ds
;========================================
code ends
end start

da鹿 发表于 2017-6-2 11:17:28

都有问题,第一二个是栈,第三个完全不知到哪里错了,请大神们赐教
页: [1]
查看完整版本: 汇编语言关于栈的使用问题(实验十)