. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验10第一题,大家帮看看,给点意见  [已解决] 回复[ 2次 ]   点击[ 406次 ]  
lanxujian
[帖 主]   [ 发表时间:2012-03-11 20:39 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2012-02-16 19:46
assume cs:code
data segment
 db 'welcome to masm!',0
 data ends
 code segment
 start: mov dh,8
        mov dl,3
                mov cl,2
                mov ax,data
                mov ds,ax
                mov si,0
                call show_str
                
                mov ax,4c00h
                int 21h
        
show_str:        push dx
                 push ax
                 push es
                 push bx
                 push cx        ;保存寄存器数值
                 
                 mov ax,0b800h
                 mov es,ax
                 mov bx,0       ;定义显存段
                 
                
                 mov ax,0a0h   
                 mul dh        ;要求的行号,结果在ax中
                 add bx,ax
                 mov ax,2
                 mul dl        ;将要求的列数乘以2,得到的结果在ax中
                 add bx,ax     ;将要写入的横竖轴的偏移地址bx
                 
xr:                 mov cl,[si]    ;将数据段的字符带入cl
                 mov ch,0        
                 jcxz ok        ;cx为0跳转到标号ok处,不为0向下
                 pop cx         ;将颜色值还原到cx中
                 push cx
                 mov al,[si]    
                 mov es:[bx],al   ;将数据段的字符带入显存段里面
                 mov es:[bx+1],cl  ;将色彩值cl放到显存段字符的后面一个内存单元 
                 inc si            ;数据段偏移加1
                 add bx,2          ;显存段偏移加2
                 jmp short xr      ;跳转到标号xr处
                 
                 
ok:              pop cx 
                 pop bx
                 pop es
                 pop ax
                 pop dx           
                 ret                ;将所有入栈的寄存器还原,返回到调用call的下面一句指令
         
code ends
end start
tomato
[第1楼]   [ 回复时间:2012-03-11 23:39 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
挺好,没问题。
lanxujian
[第2楼]   [ 回复时间:2012-03-18 21:29 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2012-02-16 19:46
此贴由 贴主 于 [ 2012-03-18 21:29 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved