. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9 源代码+分析,不懂得同学可以参考一下  [待解决] 回复[ 6次 ]   点击[ 975次 ]  
acmonster
[帖 主]   [ 发表时间:2014-07-11 20:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-11 18:04
assume cs:code,ds:data

data segment
        db 'welcome to masm!'
        db 0000010B,00100100B,01110001B
data ends

code segment                           ;用es作为显示屏的内存段地址,bx作为它的偏移地址
start:              mov ax,data            ;用di指向字符数据,si指向色彩模式
        mov ds,ax                        
        mov bx,60

        mov ax,0b878h                  ;定位到B878是为了显示在屏幕中间
        mov es,ax
        mov di,0                        ;初始化di与si
        mov si,10h        

        mov cx,3        
s:
        mov dx,cx                        ;用dx暂存cx的值
        mov cx,16
s2:
        mov al,ds:[di]
        add di,1
        mov es:[bx],al                    ;向显示器内存输入一个字符

        inc bx
        mov al,ds:[si]
        mov es:[bx],al                    ;输入该字符的色彩模式
        inc bx
loop s2
                
        mov cx,dx                          ;恢复外层循环的cx
        mov ax,es
        add ax,0ah                      
        mov es,ax                           ;修改es使下一次打印从下一行开始
        mov bx,60
        mov di,0                             ;修改di和si以打印下一行
        add si,1
loop s


        mov ax,4c00h
        int 21h        
code ends

end start
acmonster
[第1楼]   [ 回复时间:2014-07-11 21:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-11 18:04
编译时把中文注释去掉,否则会出现错误
648905586
[第2楼]   [ 回复时间:2014-11-01 13:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-16 21:39
这段代码没错吗?为什么在我的电脑上编译后运行没有显示字符串
648905586
[第3楼]   [ 回复时间:2014-11-03 14:05 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-07-16 21:39
mov ax,0b872h               
        mov es,ax 
定位到屏幕中间应该是b872吧
hkcmd
[第4楼]   [ 回复时间:2014-11-20 22:38 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-11-19 10:35
谢谢楼主的代码,已显示了结果,不过有几点疑问:
1)mov bx,60 ,为什么不是64?
2)为什么没有用jmp、jcxz等转移指令?
3)这个实验,作者是要我们明白什么?
1461299415
[第5楼]   [ 回复时间:2014-12-13 17:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2014-11-08 19:06
4楼明智呀
wrsg
[第6楼]   [ 回复时间:2019-08-22 23:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-21 12:54
mov ax,0b872h               
        mov es,ax 
定位到屏幕中间应该是b872吧
------------------
回复:数据不能以字母开头,所以加0,0b872h
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved