秋水无痕 发表于 2012-7-14 16:42:52

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

小甲鱼 发表于 2012-7-14 16:42:53

直接运行丫,为何debug~

小甲鱼 发表于 2012-7-14 17:11:50

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



data segment

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

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

data ends



stack segment

      dw 8 dup(0)

stack ends



code segment

start:

      mov ax,data

      mov ds,ax

      mov ax,stack

      mov ss,ax

      mov sp,10h

      mov bx,0

      mov di,0

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



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

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

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

      push di

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

      mov si,0

      mov di,0



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

s1:   mov al,ds:

      mov es:,al

      inc si

      add di,2

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

      

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

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

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



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

s2:   mov es:,al

      add si,2

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

      

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

      inc di

      pop ax

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

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

      pop cx



      loop s3

      

      mov ax,4c00h

      int 21h



code ends

end start


秋水无痕 发表于 2012-7-14 18:09:52

小甲鱼 发表于 2012-7-14 17:11 static/image/common/back.gif


甲鱼师傅呀,代码我写出来了!也ML了!然后debug,可是为什么不出现welcome to masm!

253009514 发表于 2012-7-14 18:23:06

代码贴上来看下 才知道你问题在哪里啊

秋水无痕 发表于 2012-7-14 21:03:17

小甲鱼 发表于 2012-7-14 18:45 static/image/common/back.gif
直接运行丫,为何debug~

怎么直接运行?求步骤!

XXXXXXX 发表于 2012-7-14 23:31:51

秋水无痕 发表于 2012-7-14 21:03 static/image/common/back.gif
怎么直接运行?求步骤!

我的系统是直接运行这个没有显示,在debug下直接用g命令就可以完好显示,慢慢单步执行显示很猎奇,推荐在debug之前先用cls清屏,避免在debug时自动上卷行引起显示的行位置差异

小甲鱼 发表于 2012-7-15 02:11:09

秋水无痕 发表于 2012-7-14 21:03 static/image/common/back.gif
怎么直接运行?求步骤!

在CMD下直接输入文件名字运行可以吗?

敉沧 发表于 2012-7-15 09:31:26

小甲鱼 发表于 2012-7-15 02:11
在CMD下直接输入文件名字运行可以吗?

或者在程序返回前加两条这样的指令就可以直接点击查看了。。
例。
mov ah,7
int 21h
mov 4c00h
int 21h

rasplin 发表于 2014-8-5 09:00:04

全银幕下执行档案哦

15801861509 发表于 2014-9-19 22:32:54

我也遇到同样的问题,程序加载了不像甲鱼视频里那样显示。
页: [1]
查看完整版本: 求解?汇编实验9 如何才能DOS情况下出现那个welcome to masm