汇编语言 第十章 实验

编写子程序

 

汇编语言 第十章 实验

代码:

show_str:
       dec dh
       mov al,0ah
       mul dh
       add ax,0B800h
       mov es,ax
       mov dh,0
       dec dx
       mov bx,dx
       mov dl,cl
     s:mov cx,0
       mov cl,ds:[si]
       jcxz ok
       mov es:[bx],cl
       inc bx
       mov es:[bx],dl
       inc bx
       inc si
       jmp short s
    ok:ret

 

汇编语言 第十章 实验

汇编语言 第十章 实验

个人代码:

 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

注:这里我用了栈,需要提前定义好栈段,如果不定义,用寄存器存放低位数据也可以。

汇编语言 第十章 实验

 

 

 

 

 

汇编语言 第十章 实验

这个实验应该是目前为止最难的一个了,不认真思考很容易出问题,整整一个下午只能算是搞完一个偷懒版本的答案

代码:

assume cs:code

data segment
 db 10 dup (0)
data ends

stack segment
 db 0,0,0,0,0,0,0,0,0,0,0
stack ends

code segment
start :mov bx,stack
       mov ss,bx
       mov sp,22
       mov bx,data
       mov ds,bx
       mov ax,12666
       mov si,0
       call dtoc
       
       mov dh,8
       mov dl,3
       mov cl,2
       call show_str
       
       
     ww:mov cx,4
        loop ww
      
      mov ax,4c00h
      int 21h

dtoc: mov dx,0
      mov bx,0ah
      div bx
      mov cx,ax
      add dx,30h
      push dx
      inc si
      jcxz s1
      jmp short dtoc
    
   s1:mov cx,si
      mov di,si
      mov si,0
   s2:pop bx
      mov ds:[si],bl
      inc si
      loop s2
      mov si,0
      ret

      
      
show_str:
      dec dh
      mov al,0ah
      mul dh
      add ax,0b800h
      mov es,ax
      mov dh,0
      dec dx
      mov bx,dx
      mov ch,0
      push cx
      mov cx,di
      pop dx
   s3:mov al,ds:[si]
      mov es:[bx],al
      inc si
      inc bx
      mov es:[bx],dl
      inc bx
      loop s3
      ret
code ends
end start

效果:

汇编语言 第十章 实验

课程设计1比上面的三个实验更复杂,而且难度不小,这个和个人的方向也有些差别,就不做了。