. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第10章汇编课题:多方位,多角度,综合超级无敌研究大总结~  [待解决] 回复[ 0次 ]   点击[ 341次 ]  
110_112
[帖 主]   [ 发表时间:2010-04-18 19:38 ]   [引用]   [回复]   [ top ] 
荣誉值:6
信誉值:0
注册日期:2010-03-17 10:10
第10章,实验10题;编写子程序


哈哈,总算到了这题啊, 这个没写的时候,就遇到朋友写过的啊。

当时我也看了好久的。我还真不信我写不出来呢。

速度,速度解决了。大步前进吧。

编程,将data 段中数据以10进制显示出来。



assume cs:code,ds:data,ss:data

data segment 
dw 123,12666,1,8,3,38,0,0
db 10 dup (0)
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ss,ax
mov ax,26
mov sp,ax
mov ax,0b800h ;设置段地址
mov es,ax
mov al,0ah
mov bl,8;行数
mul bl
mov bx,es
add ax,bx
mov es,ax  ;到这里都是设置段地址
mov di,0
mov si,0;设置个循环器,
call show_str
mov ax,4c00h
int 21h
show_str:  
         mov ax,[di]
         mov cx,ax
         jcxz s
         mov bx,10
      s4:mov dx,0
         div bx
         push dx;记录下余数
         inc si
         mov cx,ax
         jcxz s1
         jmp s4
         s:ret
      s1:mov bx,bp
         mov ax,si
         mov cx,ax
         inc di
         inc di
      s2:pop dx
         mov dh,2
         mov al,30H
         add dl,al
         mov es:[bx+6],dl
         mov es:[bx+6+1],dh ;我直接把列数写进去了,以缩短代码大小
         inc bx
         inc bx
         loop s2
         mov ax,0
         mov es:[bx+6],ax
         mov es:[bx+6+1],ax
         inc bx
         inc bx
         mov bp,bx
         mov si,0;清零计数器
         jmp short show_str
 code ends
 end start        

总结说的容易,做的难,果然我还是太笨了。程序写的真乱。大家不要看,我怕羞。

哎,   程序员真不是好当的, 我们现在才刚开始,大家要加油啦。

这个程序,我个人认为用堆栈不太好。以后写程序最后还要把数据段,代码段,堆栈全部分开设一个,留着备用。
总是到用的时候才绝的不好用。有句话说的好,方到用时方恨少啊。
而且我的程序一点规范都没有,希望以后改正吧。祝自己越写越好。
                                                            2010年4月18日,19:45成功~哦也
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved