鱼C论坛

 找回密码
 立即注册
查看: 2587|回复: 10

求解?汇编实验9 如何才能DOS情况下出现那个welcome to masm

[复制链接]
发表于 2012-7-14 16:42:52 | 显示全部楼层 |阅读模式
1鱼币

最佳答案

查看完整内容

直接运行丫,为何debug~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-14 16:42:53 | 显示全部楼层
直接运行丫,为何debug~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-14 17:11:50 | 显示全部楼层
  1. assume cs:code,ds:data,ss:stack



  2. data segment

  3.         db 'welcome to masm!'  ;定义要显示的字符串(共16字节)

  4.         db 02h,24h,71h    ;定义三种颜色属性

  5. data ends



  6. stack segment

  7.         dw 8 dup(0)

  8. stack ends



  9. code segment

  10. start:

  11.         mov ax,data

  12.         mov ds,ax

  13.         mov ax,stack

  14.         mov ss,ax

  15.         mov sp,10h

  16.         mov bx,0

  17.         mov di,0

  18.         mov ax,0b872h    ;算出屏幕第12行中间的显存的段起始位置放入ax中



  19.         mov cx,3     ;外循环为3次,因为要显示三个字符串

  20. s3:     push cx        ;三个进栈操作为外循环s3保存相关寄存器的值

  21.         push ax        ;以防止它们的值在内循环中被破坏

  22.         push di

  23.         mov es,ax      ;此时es为屏幕第12行中间的显存的段起始位置

  24.         mov si,0

  25.         mov di,0



  26.         mov cx,10h     ;内循环为10h次,因为一个字符串中含10h个字节

  27. s1:     mov al,ds:[bx+si]

  28.         mov es:[bx+di],al

  29.         inc si

  30.         add di,2

  31.         loop s1      ;此循环实现偶地址中存放字符

  32.         

  33.         mov si,1   ;si的值设为1,从而为在显存奇地址中存放字符的颜色属性做准备

  34.         pop di        ;将di的值恢复成进入内循环之前的时候的值

  35.         mov al,ds:10h[bx+di]    ;取颜色属性[源OP寻址方式:相对基址变址]



  36.         mov cx,10h     ;第二个内循环也为10h次

  37. s2:     mov es:[bx+si],al

  38.         add si,2

  39.         loop s2       ;此循环实现奇地址中存放字符的颜色属性

  40.         

  41.         ;以下4句为下一趟外循环做准备

  42.         inc di

  43.         pop ax

  44.         add ax,0ah   ;将显存的段起始地址设为当前行的下一行

  45.                   ;[在段地址中加0ah,相当于在偏移地址中加了0a0h(=160d)]

  46.         pop cx



  47.         loop s3

  48.         

  49.         mov ax,4c00h

  50.         int 21h



  51. code ends

  52. end start
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-14 18:09:52 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-14 18:23:06 | 显示全部楼层
代码贴上来看下 才知道你问题在哪里啊
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-14 21:03:17 | 显示全部楼层
小甲鱼 发表于 2012-7-14 18:45
直接运行丫,为何debug~

怎么直接运行?求步骤!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-14 23:31:51 | 显示全部楼层
秋水无痕 发表于 2012-7-14 21:03
怎么直接运行?求步骤!

我的系统是直接运行这个没有显示,在debug下直接用g命令就可以完好显示,慢慢单步执行显示很猎奇,推荐在debug之前先用cls清屏,避免在debug时自动上卷行引起显示的行位置差异
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-15 02:11:09 | 显示全部楼层
秋水无痕 发表于 2012-7-14 21:03
怎么直接运行?求步骤!

在CMD下直接输入文件名字运行可以吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-15 09:31:26 From FishC Mobile | 显示全部楼层
小甲鱼 发表于 2012-7-15 02:11
在CMD下直接输入文件名字运行可以吗?

或者在程序返回前加两条这样的指令就可以直接点击查看了。。
例。
mov ah,7
int 21h
mov 4c00h
int 21h
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-5 09:00:04 From FishC Mobile | 显示全部楼层
全银幕下执行档案哦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-9-19 22:32:54 | 显示全部楼层
我也遇到同样的问题,程序加载了不像甲鱼视频里那样显示。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-1 15:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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