. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  大家做了实验9的给点意见 我的好像不能往B8000H~BFFFFH地址空间中写入啊  [待解决] 回复[ 6次 ]   点击[ 477次 ]  
yezuopou
[帖 主]   [ 发表时间:2009-12-09 17:14 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
今天做了实验9,编译连接都没问题。但是Debug时发现往B8000H~BFFFFH中写人数据后再用-d B800:0000之类的查看B8000H~BFFFFH的内容,结果发现其中的内容不是我写入的内容啊!是不是这部分地址的内容不能修改啊?各位做得怎么样?
下面是我写的代码:
assume cs:code,ds:data

data         segment
        db 'welcome to masm!'          ;16个字节
        db 03H,34H,71H                   ;分别表示绿色、绿底红色、白底蓝色
data        ends

code        segment

 start:        mov ax,data
        mov ds,ax

        mov ax,0B800H
        mov es,ax                ;B8000-BFFFFH为显示缓冲区空间
        
             mov di,0
        mov cx,7
        mov bx,0
        mov di,0

    s1:        mov al,ds:[bx]
        mov ah,ds:[16]
        mov es:0[di],ax
        add di,2
        inc bx
        loop s1
        
        mov ax,20H
        mov ds:0[di],ax
        inc bx
        add di,2        
        mov cx,2

    s2:        mov al,ds:[bx]
        mov ah,ds:[17]
        mov es:0[di],ax
        add di,2
        inc bx
        loop s2

        mov ax,20H
        mov ds:0[di],ax
        inc bx
        add di,2
        mov cx,5

    s3:        mov al,ds:[bx]
        mov ah,ds:[18]
        mov es:0[di],ax
        add di,2
        inc bx
        loop s3

        mov ax,4C00H
        int 21H

code         ends
        
        end start
        
各位大侠抽空看看。拜托了!!!
yezuopou
[第1楼]   [ 回复时间:2009-12-09 17:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
我的电脑是联想笔记本,系统是Windows7。这些有没影响?
scuzg
[第2楼]   [ 回复时间:2009-12-10 13:59 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
可能是这些电脑已经不支持或Windows7拒绝这种直接写屏的操作了。
建议使用emu8086模拟软件:
http://www.jdxz.net/softinfo/16238.html
yezuopou
[第3楼]   [ 回复时间:2009-12-10 19:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
回复:[第2楼]
------------------
哦 谢谢你的回答  我试试看
yangqingxiaogu
[第4楼]   [ 回复时间:2009-12-10 20:56 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2009-11-24 20:22
不是不能写 只是滚屏时有改变了。  你在屏幕满之前运行(g) 就可以了  试试看啊
yezuopou
[第5楼]   [ 回复时间:2009-12-11 19:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-12-06 23:23
回复:[第4楼]
------------------
嗯 我按你说的做了结果确实可以显示。
我的代码写的是从第一行开始显示。
然后我修改成从0B800:7C0H开始,但是显示还是不会再屏幕中间开始。
我用了第二楼说的emu8086模拟软件,结果可以显示,但仍然是从第一行开始。无法从中间开始显示
scuzg
[第6楼]   [ 回复时间:2009-12-11 22:29 ]   [引用]   [回复]   [ top ] 
荣誉值:307
信誉值:0
注册日期:2009-03-15 23:46
如何在屏幕指定位置显示,请参考我的博文:
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=19481&kindId=34937&postId=40493&readSg=1
希望对你有帮助。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved