. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  看看我写的实验9作业,有人可以帮我测下吗  [待解决] 回复[ 3次 ]   点击[ 283次 ]  
linfeng0928
[帖 主]   [ 发表时间:2011-05-21 22:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-01 18:29
很羡慕实验8的源程序写法,换位想了下,就写出这个代码,不知道全对了没。

assume cs:codesg,ds:datasg
datasg segment
db 'welcome to masm!'
;以上是要输出的固定字符
db 02h
;黑底绿色
db 24h
;绿底红色
db 71h
;白底蓝色
;以上为方便阅读写得如此的控制显示时颜色代码已经转换为16进制,还没有实地用地栈所以暂时不加入栈的用法。想集中时间来学栈的用法。
datasg ends
codesg segment
start:mov ax,datasg
      mov ds,ax  ;初始化数据地址
      mov dx,0b850h
      mov es,dx ;初始化输出数据地址
      mov di,10h ;颜色值的初始化偏移地址
      mov si,3 ;控制循环的次数用
    s:mov cx,si  
      jcxz s2 ;结束循环,跳转到程序返回
      mov bx,0 ;初始化各REG
      mov bp,0
      mov cx,10h ;循环次数
   s1:mov al,[bx] ;读取字符
      mov ah,ds:[di] ;读取颜色
      mov es:[bp+40h],ax  ;输出字符
      inc bx
      add bp,2
      loop s1 ;循环主体
       inc di
      add dx,160H    ;换行显示下一循环的数据,做得没准确
      dec si  ;控制循环次数自减1
      jmp s   ;对JMP用法不那么熟先这样写希望有人帮忙
    s2:mov ax,4c00h
      int 21h
codesg ends
end start
betterpursuel
[第1楼]   [ 回复时间:2011-06-04 20:16 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2010-11-07 17:01
运行一下就知道了,你写的是不全对,只显示了一种,再改改吧
linfeng0928
[第2楼]   [ 回复时间:2011-06-15 23:33 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-01 18:29
要同时显示三种啊,没看清题目
lshang
[第3楼]   [ 回复时间:2011-06-16 22:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37
add dx,160H    ;换行显示下一循环的数据,做得没准确 

这句在上边没能呼应,导致3次循环实际上在处理一块内存。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved