. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第九章实验 程序出现的一点不明白  [待解决] 回复[ 1次 ]   点击[ 180次 ]  
dengyuquan
[帖 主]   [ 发表时间:2011-11-28 11:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-11-21 17:57
实验9 根据材料编程

    编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串'welcome to masm!'。

我自己编了2段程序  执行的结果都不对  但我就是想不明白

第一段
assume cs:code,ds:data
data segment
        db'welcome to masm!'  ;定义需要显示的字符串
data ends
code segment
start:mov ax,data
        mov ds,ax
      mov ax,0b872h          ;将第1行的段地址送入
      mov es,ax
      mov di,0             
        mov bx,0                ;这里BX设置为-1D程序显示正常(这也是让我百思不得其解的地方)
      mov cx,10h             ;循环16次
    s:mov al,ds:[bx]            
        mov es:[di],al
        mov es:[di+0a0h],al
        mov es:[di+140h],al
        inc bx
        add di,2
        loop s        
        
        
        mov di,1h
        mov cx,10h
   s1:mov byte ptr es:[di],02h
        mov byte ptr es:[di+0a0h],21h
        mov byte ptr es:[di+140h],71h 
        add di,2
        loop s1
        mov ax,4c00h
        int 21h
        code ends
                end start

注意第一段程序 执行后 第一个循环结束后 显示三排elcome to masm!但没有属性
第2个循环结束后 显示三排属性 但没有字符







第2段程序
assume cs:code,ds:data
data segment
        db'welcome to masm!'  ;定义需要显示的字符串
data ends
code segment
start:mov ax,data
        mov ds,ax
      mov ax,0b872h          ;将第1行的段地址送入
      mov es,ax
      mov di,0             
        mov bx,0                ;这里BX设置为-1D程序显示正常(这也是让我百思不得其解的地方)
      mov cx,10h             ;循环16次
    s:mov al,ds:[bx]            
        mov es:[di],al
        mov es:[di+0a0h],al
        mov es:[di+140h],al        ;将第一个字母w送入
        inc di                     ;为属性做准备
        mov byte ptr es:[di],02h
        mov byte ptr es:[di+0a0h],21h
        mov byte ptr es:[di+140h],71h      ;将第一个字母的颜色属性送入
        
        inc di                             ;为第2个字母做准备
        inc bx
        
        loop s
        mov ax,4c00h
        int 21h
        code ends
                end start
        
这个程序 可以说 非常正常 但是他只显示15个字符 第一个字符的W不显示 但是将BX设置为-1D就显示正常 这是怎么回事 

请高手解答
tomato
[第1楼]   [ 回复时间:2011-11-28 22:54 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
真是这样?那倒是挺奇怪。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved