. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  我的【实验】  [待解决] 回复[ 6次 ]   点击[ 266次 ]  
regex
[帖 主]   [ 发表时间:2010-01-19 13:15 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
我的方法估计是最笨重的啦, 呵呵

root@yeah /cygdrive/d/asm
$ cat lab9.asm
assume  cs:code
str     segment
        db      'Welcome to masm!'
str     ends

code    segment
start:
        mov ax,str                   ;把要显示的字符串
        mov ds,ax                    ;装入DS

        mov ax,0b800h                ;把指定输出的地址
        mov es,ax                    ;装入ES
                                   
        mov bx,0                     ;开始处理第一段字符串
        mov bp,780h                  ;中心行起始地址ES:0780H
        mov cx,8                     ;这个780h是用A0h*0Ch获得的
a:      mov al,[bx]                  ;在al位装入字符
        mov ah,02h                   ;在ah位装入字符属性
        mov es:[bp+40h],ax           ;传送字符到目标地址ES
        inc bx                       ;增量, 指向下一个字符
        add bp,2                     ;增量,指定下一个ES的偏移地址
        loop a                       ;CS=0,退出循环。

        mov bx,8                     ;处理第二字符串
        mov bp,780h                  ;解释同上
        mov cx,2
b:      mov al,[bx]
        mov ah,24h
        mov es:[bp+50h],ax
        inc bx
        add bp,2
        loop b

        mov bx,0bh
        mov bp,780h
        mov cx,5
c:      mov al,[bx]
        mov ah,0f1h
        mov es:[bp+56h],ax
        inc bx
        add bp,2
        loop c

        mov ah,4ch
        int 21h

code    ends
end     start

root@yeah /cygdrive/d/asm
$
我用了三个循环来处理要求不同显示的字符串,过于臃肿, 有机会再精简一下吧。
xiaorong
[第1楼]   [ 回复时间:2010-01-19 20:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-01 19:54
楼主用linux编译的吧?
用的是什么汇编编译器呀?
3167676
[第2楼]   [ 回复时间:2010-01-19 21:20 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2010-01-14 02:50
只用3种形式显示了1行  welcome to masm!
3167676
[第3楼]   [ 回复时间:2010-01-19 21:26 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:4
注册日期:2010-01-14 02:50
你好像理解错题目的意思了~
regex
[第4楼]   [ 回复时间:2010-01-19 23:18 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
题目不是要求用三种属性显示三个字符串嘛。
regex
[第5楼]   [ 回复时间:2010-01-19 23:20 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
楼主用linux编译的吧?
用的是什么汇编编译器呀?
------------------
回复:
我用的是cygwin。 
除了用shell。在学习汇编的时候, 还是用command的! 
我的编辑器是vim4dos, 编译器是masm v5.0
regex
[第6楼]   [ 回复时间:2010-01-20 01:56 ]   [引用]   [回复]   [ top ] 
荣誉值:61
信誉值:0
注册日期:2009-12-19 01:51
你好像理解错题目的意思了~
------------------
回复:嗯, 我是真的理解错啦~~~
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved