. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
主题 : :  我写的实验10的子程序,大家看看,找找不足  [待解决] 回复[ 6次 ]   点击[ 323次 ]  
a3187744a
[帖 主] [ 发表时间:2009-12-23 23:01 ] 
荣誉值:0
信誉值:0
注册日期:2009-10-14 19:20
第一个是显示子程序
show_str:push dx
  push es
  push ax
  push si
  push di
  push cx
  mov al,dh
  mov dh,160
  mul dh
  mov dh,0
  add dx,dx
  add ax,dx
  mov di,ax
  mov ax,0b800h        
  mov es,ax
  mov al,cl
s:mov cl,[si]
  mov ch,0
  jcxz ok
  mov byte ptr es:[di],cl
  mov byte ptr es:[di+1],al
  inc si
  add di,2
  jmp short s
ok:pop cx
  pop di
  pop si
  pop ax
  pop dx
  pop es
  ret
第二个是解决除法益处的
divdw:push bx
mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
pop bx
ret
第三个是数值显示的问题
assume cs:code

data segment
 db 10 dup (0)
data 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 cx
     push dx
     push si
     
     mov dx,0
     dtoc_s:mov cx,10
     call divdw
     jcxz dtoc_ok
     add cx,30H
     push cx
     inc si
     jmp short dtoc_s
     dtoc_ok:mov cx,si
             mov si,0
             dtoc_s1:pop [si]
             inc si
             loop dtoc_s1
             pop si
             pop dx
             pop cx
             ret

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

show_str:push dx
         push es
         push ax
         push si
         push di
         push cx
         mov al,dh
         mov dh,160
         mul dh
         mov dh,0
         add dx,dx
         add ax,dx
         mov di,ax
         mov ax,0b800h        
         mov es,ax
         mov al,cl
         show_str_s:mov cl,[si]
         mov ch,0
         jcxz show_str_ok
         mov es:[di],cl
         mov es:[di+1],al
         inc si
         add di,2
         jmp short show_str_s
      show_str_ok:pop cx
         pop di
         pop si
         pop ax
         pop dx
         pop es
         ret 
code ends
end start



大家找找我的不足
jack_yin
[第2楼] [ 回复时间:2010-01-05 22:05 ] 
荣誉值:0
信誉值:0
注册日期:2010-01-05 21:48
mov byte ptr es:[di],cl  
  mov byte ptr es:[di+1],al  
这个 本身就可以 不用 byte ptr 的 因为 cl,al 已经指明是8位操作了
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved