鱼C论坛

 找回密码
 立即注册
查看: 2548|回复: 7

实验九 编译不通过

[复制链接]
发表于 2012-6-5 20:12:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wei522688662 于 2012-6-5 20:27 编辑

assume ds:data,cs:code,ss:sta

data        segment
        db        'welcome to masm!'         ;用si定位
        db        2,36,113,122        ;用di定位 这里我想打印4行 增加一行白底绿色高亮
data         ends
sta                segment
        dw        0,0
sta                ends
code        segment
start:        mov ax,0b800h
                mov es,ax
                mov sp,4h
                mov bx,0h       ;定位行
                mov si,0h
                mov di,10h
                mov dx,0h
                mov cx,4h ;4行文字
                push cx
        lie:        mov cx,10h ;16列字符
                hang:        mov al,ds:[si]
                                mov es:[bx+dx],al
                                mov ah,ds:[di]
                                mov es:[bx+dx+1],ah
                        
                                add dl,2h
                                inc si
                                loop hang
                        pop cx
                        mov bx,0a0h
                        inc di
                        loop lie
        
                mov ax,4c00h
                int 21h
code        ends

end        start
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-5 21:18:07 | 显示全部楼层
这是我的代码


  1. assume cs:code,ds:data,ss:stackdata segment
  2. db 'welcome to masm!'
  3. db 02h,24h,71h
  4. data endsstack segment
  5. dw 8 dup(8)
  6. stack endscode segmentstart: mov ax,data
  7.   mov ds,ax
  8.   mov ax,stack
  9.   mov ss,ax
  10.   mov sp,10h
  11.   
  12.   mov bx,10h
  13.   mov ax,0b872h
  14.   
  15.   mov cx,3
  16. s1:  
  17.   push ax
  18.   push cx
  19.   
  20.   mov es,ax
  21.   mov si,0
  22.   mov di,0
  23.   
  24.   mov cx,10h
  25. s2:  
  26.   mov al,ds:[si]
  27.   mov es:[di],al
  28.   mov ah,ds:[bx]
  29.   mov es:[di+1],ah
  30.   inc si
  31.   add di,2
  32.   loop s2
  33.   
  34.   inc bx
  35.   pop cx
  36.   pop ax
  37.   add ax,0ah
  38.   
  39.   loop s1
  40.     mov ax,4c00h
  41.   int 21h
  42.   
  43. code ends
  44. end start
  45.   
  46.   
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-5 22:11:50 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 11:37:14 | 显示全部楼层
   mov es:[bx+dx],al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来   你的那个程序好像也不是很对吧···
si··列··都得入栈··你栈空间不够··
还有你那个mov bx,oaoh·不是很懂···
我也是新手  能看出来的就这么多了····
呵呵·····
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-6 15:42:34 | 显示全部楼层
静雨纷纷 发表于 2012-6-6 11:37
mov es:,al
编译不出来 好像是这的原因·好像不能用dx··
就是能编译出来   你的那个程序好像也不是很 ...

十分感谢你,mov bx,0a0h是每次增加  以达到换行的目的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-6-6 23:33:12 | 显示全部楼层
wei522688662 发表于 2012-6-6 15:42
十分感谢你,mov bx,0a0h是每次增加  以达到换行的目的

弱弱的说一下 ··不应该是add bx,0a0h
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-7 08:34:45 | 显示全部楼层
静雨纷纷 发表于 2012-6-6 23:33
弱弱的说一下 ··不应该是add bx,0a0h

你是对的 ⊙﹏⊙b汗  是我粗心 打错了 但是本意是add的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-6-8 08:34:08 | 显示全部楼层
:L唉...求人不如求己 最后还是自己解决了

assume ds:data,cs:code,ss:stack

data        segment
        db        'welcome to masm!'         ;用si定位
        db        2,36,113,122                ;用di定位
data         ends
stack        segment stack
        dw        0,0,0,0,0,0,0,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 ax,0h
                mov si,0h                                ;为数据区字符索引
                mov di,10h                                ;为数据区属性索引
                mov bx,0c0h                                ;显存行索引+列索引
                mov cx,4h                                ;
;==================初始化结束=======================================
;==================循环4行==========================================
                lie:        push cx
                                mov cx,10h                        ;每一行16个字符
                                mov si,0h                        ;每一次打印完成一行之后,索引回到行首
               
                                hang:        mov al,ds:[si]                ;取字符
                                                mov es:[bx],al                ;字符装入显存
                                                mov ah,ds:[di]                ;取属性
                                                mov es:[bx+1],ah        ;属性装入显存
                                               
                                                inc si                       
                                                add bx,2
                                                loop hang
               
                                pop cx
                                inc di
                                add bx,0a0h                        ;bx为行索引,此行代码为换行
                                sub bx,20h                        ;换行后回到行首列(相对来说,不是绝对行首)
                                loop lie
;==================循环4行结束=======================================
                mov ax,4c00h
                int 21h
code ends
end start
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 01:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表