实验七 子程序设计(1) (一)实验目的 1、掌握子程序的设计方法和调用方式 2、深刻认识堆栈在子程序设计中所起的作用 3、掌握子程序调试的技巧。 (二)实验设备 同实验二 (三)实验内容和要求 实验内容: 内存中有一字节型无符号数缓冲区Data,长度为100。将Data缓冲区显示到屏幕上,分别用二进制,十进制和十六进制。要求: 1.编写子程序将一个字节数用二进制进行显示,参数用内存数传递; 2.编写子程序将一个字节数用十进制进行显示,参数用寄存器数传递; 3.编写子程序将一个字节数用十六进制进行显示,参数用堆栈传递; (四)预习要求 同实验二 (五)实验步骤 同实验二 (六)实验结果分析 1、理解3种参数传递方式各有什么特点 2、绘制一般子程序的结构。 (七)编程提示 (a) 二进制显示可采用移位并判断该位的方式进行。 (b) 十进制数采用除以10取商的方式。 (c) 十六进制数可利用二进制转换位十六进制的方法进行。 (d) 注意去掉最高位的“0”。 目前只做了1和2 DSEG segmentdata 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,hdatadseg 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,0ddata: mov dl,' ' mov ah,2 int 21h mov cx,100nextt: mov bl,data[si] mov bh,0 inc si call progdec loop nextt jmp donehdata: 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 exitexit: 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,0ok: mov bh,data[si] mov cx,8ok1: 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 retprogbit endp cseg ends end start

评论