鱼C论坛

 找回密码
 立即注册
查看: 3109|回复: 5

一个汇编问题

[复制链接]
发表于 2019-3-10 13:39:22 | 显示全部楼层 |阅读模式

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

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

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

                db 'Welcome to masm!'
                db 02h,24h,71h
               
data ends


stack segment

                dw 8 dup(0)
               
stack ends


code segment

start:
                mov ax,data
                mov ds,ax                 ;Making the ds become data segment
               
                mov ax,stack
                mov ss,ax                ;Making the ss point stack segment
               
                xor bx,bx                ;bx清零,用来索引颜色
                mov ax,0b872h        ;算出屏幕第12行中间的显存的起始位置放入ax中
               
                mov cx,3                ;s3循环控制行数,外循环为3次,因为要显示三个字符串
s3:                push cx                        ;三个进栈操作为外循环s3保存相关寄存器的值
                push ax                        ;以防它们的值在内循环中被破坏
                push bx
               
                mov es,ax                ;此时es为屏幕第12行中间的显存的段起始位置
               
                mov si,0                ;si用来索引代码列的字符
                mov di,0                ;di用来定位目标列
               
                mov cx,10h
                ;s1循环控制存放的字符,内循环为10h次,因为一个字符串中含10h个字节
s1:          mov al,ds:[si]
                mov es:[di],al
                inc si
                add di,2
                loop s1                 ;次循环实现偶地址中存放字符
               
                mov di,1                ;di的值设为1,从而在显存奇地址中存放字符的颜色属性做准备
                pop bx
                mov al,ds:10h[bx]        ;取颜色属性
                inc bx
               
                mov cx,10h                ;第二个内循环也为10hci
s2:     mov es:[di],al
                add di,2
                loop s2                        ;此循环实现奇地址中存放字符的颜色属性
               
                ;以下4句为下一趟外循环做准备
                pop ax
                add ax,0ah                ;将显存的段起始地址设为当前行的下一行
                                                ;[在段地址中加0ah,相当于在偏移地址中加了0a0h(=160d)]
                pop cx
                loop s3
               
                mov ax,4c00h
                int 21h
               
code ends

end start


想问一下各位汇编大佬为什么照着小甲鱼的代码打,却没出现相应的效果,'welcome to masm'没能显示出来,用的是windows7操作系统
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-3-10 15:56:33 | 显示全部楼层
    可以的,代码没有问题,直接运行,不要用 debug 跟踪。
hello.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-10 17:59:58 | 显示全部楼层
对,跟踪是没办法出现结果的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-12 16:45:01 | 显示全部楼层

大佬,还是没出现....

大佬,还是没出现....

大佬,还是未能出现.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-13 09:23:54 | 显示全部楼层
楼主,你用的是win7 32位吧?
win7开始就不能正确运行16位的程序啦,有两种办法:
    1. 使用xp运行 16位程序
    2. 在win7上装 DOSBox , 然后在 DOSBox 中运行 16位程序
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-13 22:51:20 | 显示全部楼层
成功的.png
可是我发的另一个贴子的汇编代码,经过大佬们的指点后,在windows7上是可以运行的。而且也有图案的......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-7-5 11:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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