dps521 发表于 2014-2-10 14:51:33

求各位大神 给帮帮忙

本帖最后由 dps521 于 2014-2-10 16:24 编辑

这段实验9的代码我实在看不出什么问题来求各位火眼精睛 给找一下问题
谢谢 assume cs:code
date segment
db 'welcome to masm!'
db 02h,21h,71h
date ends
stack segment
dw 8 dup(0)
stack ends
code segment
start:mov ax,date   
      mov ds,ax      ;数据段与DS挂钩
      mov ax,stack
      mov ss,ax      ;栈段与SS挂钩
   mov sp,10h   ;SP栈顶为10H
   mov bx,0      ;BX为0用来索引颜色   
   mov ax,0b872h   ;将显存地址放入AX中
   mov cx,3         ;设置循环3次
s:push cx          ;将CX入栈保存起来
   push ax          ;将AX保存起来
   push bx         ;将BX入栈保存起来
   mov es,ax       ;将显存地址放入ES中
   mov si,0         ;设置SI为0用来索引字符
   mov di,0          ;用来索引目的地址
   mov cx,10h         ;循环16次
   s1:
      mov al,ds:    ;将字符W放入AL中
   mov es:,al   ;将AL中的字放入目的的地址
   inc si            ;SI递增1用来索引下一个字符
      adddi,2    ;用来索引目的地址
   loop s1      
mov di,1
pop bx   
    mov al,ds:;将颜色放入AL中
inc bx
mov cx,10h
s2:mov es:,al      ;将颜色放入目的地址
      add di,2            ;用来索引颜色
    loop s2    ;跳向S2处循环
    pop ax   ;将AX的值恢复
    add ax,0a0h   ;AX加160跳向下一行
    pop cx      ;恢复CX的值 为3
    loop s   ;跳向S处循环
   
    mov ax,4c00h
    int 21h
    code ends
    end start执行完后就显示出一行 ‘welcome to masm !'来
               
   

dps521 发表于 2014-2-10 17:56:56

南阿南南安南安

槽枥白驹 发表于 2014-2-10 18:44:45

吴观此bug必有蹊跷!该bug若隐若现,虚无缥缈;小弟思索良久未得其解!

dps521 发表于 2014-2-10 21:55:55

mov ax 0a0 错了0A就行了因为 ES*16再加便宜地址

tk2003 发表于 2014-2-11 13:08:24

同意4楼所诉,A0太多了,+A就可以了,否则加了太多行电脑看不到!
奇怪的就是,我居然无法在虚拟机运行此程序,

s0512 发表于 2014-2-11 13:37:01

四楼正解

s0512 发表于 2014-2-11 13:38:24

请及时结贴!谢谢

欣欣celin 发表于 2014-2-11 20:56:48

date   X
data   o
{:7_154:}汇编还没学,咋一看,以上词打错了吧??

bubu 发表于 2014-2-13 14:18:13

我是来学习的。
页: [1]
查看完整版本: 求各位大神 给帮帮忙