. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九 答案  [待解决] 回复[ 3次 ]   点击[ 339次 ]  
benzhemin
[帖 主]   [ 发表时间:2011-10-09 22:07 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2011-09-18 20:07
assume cs:code

data segment
  db 'welcome to masm!'
data ends

color segment
  db 00000010B, 00100100B, 01110001B
color ends

stack segment
  dd 0, 0, 0, 0
stack ends

code segment
start: 
  mov ax, 0B800H
  mov es, ax
  
  mov ax, stack
  mov ss, ax
  mov sp, 10H
  
  
;将color存入栈  
  mov ax, color
  mov ds, ax

  mov bx, 2
  mov cx, 3
lcolor:
  mov ah, 0
  mov al, ds:[bx]
  push ax
  dec bx
  loop lcolor
  
  
  mov ax, data
  mov ds, ax
  
  mov bp, 0
  mov cx, 3
lrow:
  mov bx, 0
  mov di, 0
  pop dx
  push cx
  
  mov cx, 16
levyrow:
  mov al, ds:[bx]
  inc bx
  mov es:[bp+di], al
  inc di
  mov es:[bp+di], dl
  inc di
  loop levyrow
  
  add bp, 0A0H
  pop cx
  loop lrow
  
  mov ax, 4c00h
  int 21h
  
code ends
end start
  
  
写的啰嗦了一点,但是思路还是清晰的。
因为welcome to masm!写在了屏幕的前三行,所以在debug的时候,千万不要超出第一屏,否则看不到效果。
我开始就是因为程序写对了,看不到效果,以为自己写的不对。。

示例:
debug xxxx.exe
g cs:004A
就看到效果了
benzhemin
[第1楼]   [ 回复时间:2011-10-09 22:08 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:2
注册日期:2011-09-18 20:07
有问题可以发email给我benlinus@qq.com,欢迎交流,愿意帮助菜鸟解答
rotapple
[第2楼]   [ 回复时间:2011-10-10 11:12 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2011-06-01 16:20
直接g就行了,不需要cs:004a
或者g 4a就行了默认是cs
zmer
[第3楼]   [ 回复时间:2011-10-10 15:01 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-10-10 14:03
貌似不是显示在屏幕中间?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved