. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9,自己完成的,2个循环  [待解决] 回复[ 4次 ]   点击[ 198次 ]  
pediyzhi
[帖 主]   [ 发表时间:2012-07-24 10:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-06 13:58
assume cs:codesg 

data segment
db 'welcome to masm!'
db 2,24h,71h
data ends

stack segment
        db 16 dup (0)
stack ends

codesg segment

        start:
        mov ax,data
        mov ds,ax
        mov ax,stack
        mov ss,ax
        mov sp,16
        mov si,0
        mov di,0
        
        mov bx,0
        ; mov ax,0b872h
        mov ax,0b872h        ;80*2=160字节*11行=1760(实际上是11行尾.也就是12行的开始) 因为第行80个字节,
        ;然后welcome to masm!是16个字节 80-16=64然后64/2 =32 然后因为每个字符要占一个字节,
        ;因为低位是AscII码,高位是颜色表,所以每行是160个字节,所以32*2=64=1760+64=1824 =720h
        

        mov bp,10h
        mov cx,3
        s:
        push cx
        
        mov es,ax
        mov dh,ds:[bp]
        mov cx,16
        s1:
        mov dl,[bx+si]
        mov es:[bx+di],dl
        mov es:[bx+di].1,dh
        
        inc si
        add di,2
        loop s1
        
        inc bp
        ; add ax,14h 这个是隔行了
        add ax,0ah ;将显存的段地址设置为当前行的下一行
                     ;在段地址中加上0ah,相当于在偏移地址中加了0a0h(=160d)
                    ;因为段地址要乘以16嘛
        mov si,0
        mov di,0
        pop cx
        loop s
        

        mov ax,4c00h
        int 21h
        
codesg ends
end start
pediyzhi
[第1楼]   [ 回复时间:2012-07-24 10:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-06-06 13:58
嗯,自己发现寻址中的BX多余了,呵呵
fpamc
[第2楼]   [ 回复时间:2012-07-24 11:23 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
恩'木问题。
333000
[第3楼]   [ 回复时间:2012-07-30 23:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-07-14 22:19
add ax,14h  这个有点搞不明白?
fpamc
[第4楼]   [ 回复时间:2012-07-31 09:20 ]   [引用]   [回复]   [ top ] 
荣誉值:30
信誉值:4
注册日期:2012-01-01 16:36
回复:[第3楼]
------------------
这条指令没用。因为有';'所以不会被执行。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved