正文

汇编子程序设计2006-11-14 22:58:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hammers/20339.html

分享到:

实验七 子程序设计(1

(一)实验目的

1、掌握子程序的设计方法和调用方式

2、深刻认识堆栈在子程序设计中所起的作用

3、掌握子程序调试的技巧。

(二)实验设备

同实验二

(三)实验内容和要求

实验内容:

内存中有一字节型无符号数缓冲区Data,长度为100。将Data缓冲区显示到屏幕上,分别用二进制,十进制和十六进制。要求:

1.编写子程序将一个字节数用二进制进行显示,参数用内存数传递;

2.编写子程序将一个字节数用十进制进行显示,参数用寄存器数传递;

3.编写子程序将一个字节数用十六进制进行显示,参数用堆栈传递;

(四)预习要求

同实验二

(五)实验步骤

同实验二

(六)实验结果分析

1、理解3种参数传递方式各有什么特点

2、绘制一般子程序的结构。

(七)编程提示

(a) 二进制显示可采用移位并判断该位的方式进行。

(b) 十进制数采用除以10取商的方式。

(c) 十六进制数可利用二进制转换位十六进制的方法进行。

(d) 注意去掉最高位的0


目前只做了1和2

 

 

 

 

 

 

DSEG    segment
data  db   101,1,2,3,4,5,6,7,8,9,90 dup(5)
msg   db   ',','$'
msg1  db   'please choose operation','$'
msg2  db   '0:bit-data;   1:dec-data;    2:hex-data','$'
addrtbl dw  bdata,ddata,hdata
dseg     ends

 

cseg    segment
 assume cs:cseg,ds:dseg
  
start:
 mov ax,dseg
 mov ds,ax
        lea dx,msg1
        mov ah,9
        int 21h
        mov dl,0ah
    mov ah,2
 int 21h
        lea dx,msg2
        mov ah,9
 int 21h
  mov ah,1
    int 21h
        sub al,30h
        mov ah,0
        shl ax,1
 mov bx,ax 
        jmp addrtbl[bx]
 mov si,0
ddata:
       mov dl,' '
       mov ah,2
       int 21h
       mov cx,100
nextt:  mov bl,data[si]
       mov bh,0
       inc si
     
       call  progdec
       loop nextt
       jmp done
hdata:

 

bdata:      
 call    progbit

 
done:    mov ah,4ch
      int 21h

 

progdec  proc
        push ax
 push dx
 push bx
 
 mov dl,100
 mov ax,bx
 div dl
 cmp al,0
 jne  hundred
    mov ax,bx
    mov dl,10
    div dl
    cmp al,0
    jne  ten
    mov dl,bl
    add dl,30h
    mov ah,2
    int 21h
    jmp exit
   
ten:
   mov dl,al
   add dl,30h
   mov bx,ax
   mov ah,2
   int 21h
   mov dl,bh
   add dl,30h
   mov ah,2
   int 21h
   jmp exit
  
  
   
hundred:
     mov dl,al
     mov bx,ax
     add dl,30h
     mov ah,2
     int 21h
     mov ah,bh
     mov al,ah
     mov ah,0
     mov dl,10
     div dl
     mov dl,al
     add dl,30h
     mov bx,ax
     mov ah,2
     int 21h
     mov dl,bh
     add dl,30h
     mov ah,2
     int 21h
     jmp exit
exit:
    mov dl,' '
    mov ah,2
    int 21h
     pop bx
     pop dx
     pop ax
     ret

progdec endp

 


progbit   proc
            push ax
     push bx
     push cx
     push dx
     push si

 

    mov si,0
ok:   
        mov  bh,data[si]
        mov  cx,8
ok1:    mov  dl,30h
        shl  bh,1
     jnc  skip
     inc  dl
        
skip:   mov  ah,2
        int  21h
     loop ok1
    
    
    
next:   lea dx,msg
        mov ah,9
        int 21h
        inc si
        cmp si,100
        jb  ok

 

      
       pop si
       pop dx
       pop cx
       pop bx
       pop ax
    
       ret
progbit   endp 

 


cseg ends
     end    start

   
      

阅读(2797) | 评论(1)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册