. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验9不理解,求助  [待解决] 回复[ 6次 ]   点击[ 370次 ]  
bill_anny
[帖 主]   [ 发表时间:2010-01-05 14:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19
对于实验9写代码如下,但执行不显示结果,请各位大侠帮助一下。
assume cs:code,ds:data

data segment
        db 'welcome to masm!'
        db 02h;黒、緑
        db 28h;緑、赤
        db 71h;白、ブル
data ends
stack segment
        dw 16 dup (0) 
stack ends

code segment
start:        mov ax,data
        mov ds,ax
        mov ax,0B800h
        mov es,ax
        mov ax,stack
        mov ss,ax
        mov sp,10H

        mov cx,3
s:        mov bx,3
        sub bx,cx
        mov ah,[10h+BX]
        push cx
        mov bx,0
        mov cx,10h

s0:        mov al,[bx]
        mov si,bx
        add si,si
        mov es:[si],ax
        inc bx
        loop s0

        mov ax,es
        add ax,0Ah
        mov es,ax
        pop cx
        loop s

        xor ah,ah
        int 16h
        mov ax,4c00h
        int 21h
code ends
end start
bill_anny
[第1楼]   [ 回复时间:2010-01-05 15:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19
晕了,好像在DOSBOX里好使。。。。。。
这是为什么呢??
mess
[第2楼]   [ 回复时间:2010-01-05 17:56 ]   [引用]   [回复]   [ top ] 
荣誉值:337
信誉值:0
注册日期:2008-01-01 17:48
在第四章介绍的环境中,在左上角能显示三个字符串。不知道楼主的实验环境是什么。
bill_anny
[第3楼]   [ 回复时间:2010-01-06 08:10 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19
我的环境是XP下的CMD形式,窗口和全屏都不能显示。。。。。。
abob
[第4楼]   [ 回复时间:2010-01-06 14:14 ]   [引用]   [回复]   [ top ] 
荣誉值:169
信誉值:0
注册日期:2008-08-19 16:07
用command
bill_anny
[第5楼]   [ 回复时间:2010-01-15 13:45 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-01 11:19
噢,知道了,我用的日文系统,好像不怎么OK,换成中文字体后,可以显示了。
coolman
[第6楼]   [ 回复时间:2010-02-10 15:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-02 15:08
我的方法类似,编译连接通过,测试能正常显示。
提供给你参考,具体如下:
assume cs:code,ds:data,ss:stack
data segment
  db 'Welcome to masm!'    
  db 2h,24h,71h           ;设置颜色       
data ends
stack segment
  dw 8 dup (0) 
stack ends
code segment
start:
      mov ax,0b800h
      mov es,ax              
      
      mov ax,data
      mov ds,ax

      mov ax,stack
      mov ss,ax
      mov sp,16

      mov cx,3             
      mov bx,7c0h  ;(从第12行显示,每行从第32个字符显示,每个字符2字节)12*160+64=1984=7C0H   
      mov si,0            
      
  s:  push cx             ;外循环分行写入每行数据到显示内存,内循环处理每个字符,cx入栈
      push si             ;外循环用si来跟踪颜色,你循环用si跟踪字符,si入栈
      mov ah,16[si]       ;外循环中把每行颜色数据读入ah
      
      mov si,0            ;初始化内循环所需的各个寄存器 
      mov di,0
      mov cx,16
  s1: mov al,[si]             
      mov es:[bx+di],ax
      inc si
      add di,2
      loop s1

      add bx,0a0h
      pop si
      inc si
      pop cx
      loop s

     mov ax,4c00h
     int 21h
code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved