. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  终于把实验9给弄出来了  [待解决] 回复[ 2次 ]   点击[ 339次 ]  
0951101
[帖 主]   [ 发表时间:2011-04-09 23:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-22 10:32
assume cs:codesg
  data segment
     db 'welcome to masm!'
  data ends

 codesg segment
   start:
         mov ax,data
         mov ds,ax

mov ax,0B800h
         mov es,ax
        
        mov cx,16
        mov si,40h
        mov dx,0
      s:mov al,[bx]
        mov es:[si+6e0h],al
        mov es:[si+780h],al
        mov es:[si+820h],al
        inc si
        mov al, 00000010b
        mov es:[si+6e0h],al
        mov al, 00100100b
        mov es:[si+780h],al
        mov al,01110001b
        mov es:[si+820h],al
        inc si
        inc bx
         loop s
     mov ax,4c00h
     int 21h

 codesg ends
 end start
1:mov ax,0B800h
忘记b前面加0 好崩溃
2绿色:00000010b
 绿底红色:00100100b
 白底蓝色:01110001b
3:显示:直接在debug中用g命令
vvfire
[第1楼]   [ 回复时间:2011-04-13 11:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-18 13:14
我也弄了大半天才弄出来
squall122
[第2楼]   [ 回复时间:2011-04-14 14:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-02-28 19:27
我一开始以为要用jmp,就往jmp上靠,结果搞得无比复杂,后来才想起来定义数据段,囧。。。而且我还没定义字符串。。。下面是我的写法,用了两个循环:


assume cs:code

data segment
    db 77H,65H,6CH,63H,6FH,6DH,65H,20H,74H,6FH,20H,6DH,61H,73H,6DH,21H,02H,24H,71H ;最后3个定义的是字符属性
data ends

code segment
start: mov ax,0B800H
       mov ds,ax
       mov ax,data
       mov es,ax
       mov bx,0BE0H   ;这边的两个距离0BE0和46是我大概估算的,呵呵
       mov si,46      

       mov cx,3       ;大循环3次
       mov di,16      ;定义字符属性所在的位置
   s0: mov dx,cx      ;存入大循环数
       mov cx,16      ;小循环16次
       mov bp,0
       
    s: mov al,es:[bp]
       mov ds:[bx+si],al    ;放入字符
       mov al,es:[di]
       mov ds:[bx+si+1],al  ;放入字符属性
       add bx,2
       add bp,1
       loop s
       
       inc di        ;指向下一个字符属性
       sub bx,32     ;回退‘welcome to masm!’这句话的长度
       add bx,0A0H   ;向下一行
       mov cx,dx     ;取出大循环数
       loop s0
       
       mov ax,4c00H
       int 21H

code ends

end  start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved