社区
汇编语言
帖子详情
windowsXP下可以运行DOS下的汇编程序吗
caiwei1129
2003-12-12 04:04:28
一个很简单的程序test.asm
CSEG SEGMENT
ASSUME CS:CSEG
START:
MOV DL,07H
MOV AH,2
INT 21H
CSEG ENDS
END START
我在WinXP的DOS窗口中用masm5编译成exe文件成功,可是执行的时候出错
是不是DOS版的汇编程序不能在windows下运行?windows下只能运行Win32汇编?
小弟是新手,盼解答
...全文
143
7
打赏
收藏
windowsXP下可以运行DOS下的汇编程序吗
一个很简单的程序test.asm CSEG SEGMENT ASSUME CS:CSEG START: MOV DL,07H MOV AH,2 INT 21H CSEG ENDS END START 我在WinXP的DOS窗口中用masm5编译成exe文件成功,可是执行的时候出错 是不是DOS版的汇编程序不能在windows下运行?windows下只能运行Win32汇编? 小弟是新手,盼解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caiwei1129
2003-12-15
打赏
举报
回复
谢谢各位的帮助,程序已经可以运行了:)
紫郢剑侠
2003-12-14
打赏
举报
回复
>>我在WinXP的DOS窗口中用masm5编译成exe文件成功,可是执行的时候出错
masm5的汇编程序和连接程序也是DOS程序, 你能把你的汇编源程序汇编和连接成功, 就说明DOS程序是可以在WIN XP上正常执行的.
问题出在你编写的汇编程源程序上, 它没有返回操作系统.
要用
mov ax, 4c00h ;结束程序返回DOS
int 21h
zyOOOOOO
2003-12-14
打赏
举报
回复
可以,但你得把masm5安装在winXP的目录中
liangkove
2003-12-13
打赏
举报
回复
可以的。我自己亲身做过。
kuangjingbo
2003-12-12
打赏
举报
回复
应该可以的
紫郢剑侠
2003-12-12
打赏
举报
回复
windowsXP下可以运行DOS下的汇编程序.
为了保险起见, 还是用COM格式:
CSEG SEGMENT
ASSUME CS:CSEG, DS: CSEG
ORG 100H
START:
MOV DL,07H
MOV AH,2
INT 21H
mov ax, 4c00h ;结束程序返回DOS
int 21h
CSEG ENDS
END START
sxzzsf
2003-12-12
打赏
举报
回复
这个程序有问题
没有定义 过程调用方式
主程序也是过程,如同C语言,必须有main()函数一样
CSEG SEGMENT
cproc proc far ;;
ASSUME CS:CSEG
START:
MOV DL,07H
MOV AH,2
INT 21H
CSEG ENDS
cproc endp ;;
END START
只要没有直接读写硬件,就不会有问题
asm 汇编语言基础知识
第一章 汇编语言程序设计的实验环境及实验步骤 知识提要: 本章主要进行汇编语言实验环境及实验步骤,涉及到的知识点包括: 1、汇编语言源程序编写好以后, 必须经过下列几个步骤才能在机器上
运行
: (1) 编辑源程序(生成.ASM文件) (2) 汇编源程序(.ASM → .OBJ) (3) 连接目标程序(.OBJ → .EXE ) (4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件) (5)
运行
程序输出结果。 2、
Windows
环境下的汇编语言集成编程环境的使用 实验一
DOS
环境下的汇编语言编程环境使用(基础与验证型) 一、实验要求和目的 1、掌握汇编语言程序设计的基本方法和技能; 2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序; 3、熟练掌握宏
汇编程序
MASM的使用; 4、熟练掌握连接程序LINK的使用。 二、软硬件环境 1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存; 2、软件环境:装有MASM 5.0、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。 三、实验涉及的主要知识单元 1、汇编语言源程序的汇编过程 汇编语言源程序的汇编过程是是利用
汇编程序
(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为 .OBJ的目标文件、扩展名为 .LST 的列表文件和扩展名为 .CRF 的交叉索引文件。目标文件是必须建立的,它包含了程序中所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序,列表文件可以打印输出,可供调试检查用。交叉索引文件(.CRF)是用来了解源程序中各符号的定义和引用情况的。.LST和.CRF两个文件不是必须建立的,可有有无,可以通过汇编时的命令加以选择。 在对源程序文件(ASM文件)汇编时,
汇编程序
将对ASM文件进行两遍扫描,若程序文件中有语法错误,则结束汇编,
汇编程序
将指出源程序中存在的错误,这时应返回编辑环境修改源程序中的错误,再经过汇编,直到最后得到无错误的目标程序,即OBJ文件。因此,
汇编程序
的主要功能可以概括为以下三点: (1) 检查源程序中的语法错误,并给出错误信息;(2) 产生目标程序文件(OBJ文件),并可给出列表文件(.LST文件);(3) 展开宏指令。
汇编程序
是系统提供的用于汇编的系统软件,目前常用的
汇编程序
有Microsoft公司推出的宏汇编程MASM(MACRO ASSEMBLER)和BORLAND公司推出的TASM(TURBO ASSEMBLER)两种。Microsoft公司推出有宏
汇编程序
MASM和小
汇编程序
ASM两种,二者的区别在于:MASM有宏处理功能,而ASM没有宏处理功能,因此,MASM比ASM的功能强大,但MASM需要占据较大的内存空间,当内存空间较小时(如64 KB),只能使用ASM。 2、目标程序的连接过程 汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接
运行
,它必须通过连接程序(LINK)连接成一个可执行程序后才能
运行
。连接程序进行连接时,其输入有两个部分:一是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如C语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要是为高级语言提供的。连接后输出两个文件,一是扩展名为 .EXE的可执行文件,另一个是扩展名为 .MAP 的内存分配文件,它是连接程序的列表文件,又称为连接映像(Link Map),它给出每个段在存储器中的分配情况,该文件可有可无。连接程序给出的“无堆栈段的警告性错误”并不影响程序的
运行
。所以,到此为止,连接过程已经结束,可以在操作系统下执行该.EXE程序了。 3、汇编语言和
DOS
操作系统的接口 编写的汇编语言源程序是在
DOS
环境下
运行
时,必须了解汇编语言是如何同
DOS
操作系统接口的。 用编辑程序把源程序输入到机器中,用
汇编程序
把它转换为目标程序,用连接程序对其进行连接和定位时,操作系统为每一个用户程序建立了一个程序段前缀区PSP,其长度为256个字节,主要用于存放所要执行程序的有关信息,同时也提供了程序和操作系统的接口。操作系统在程序段前缀的开始处(偏移地址0000H)安排了一条INT 20H软中断指令。INT 20H中断服务程序由
DOS
提供,执行该服务程序后,控制就转移到
DOS
,即返回到
DOS
管理的状态。因此,用户在组织程序时,必须使程序执行完后能去执行存放于PSP开始处的INT 20H指令,这样便返回到
DOS
,否则就无法继续键入命令和程序。
DOS
在建立了程序段前缀区PSP之后,将要执行的程序从磁盘装入内存。在定位程序时,
DOS
将代码段置于PSP下方,代码段之后是数据段,最后放置堆栈段。内存分配好之后,
DOS
就设置段寄存器DS和ES的值,以使它们指向PSP的开始处,即INT 20H的存放地址,同时将CS设置为PSP后面代码段的段地址,IP设置为指向代码段中第一条要执行的指令位置,把SS设置为指向堆栈的段地址,让SP指向堆栈段的栈底,然后系统开始执行用户程序。为了保证用户程序执行完后能返回到
DOS
状态,可使用如下两种方法。 (一)标准方法 首先将用户程序的主程序定义成一个FAR过程,其最后一条指令为RET。然后在代码段的主程序(即FAR过程)的开始部分用如下三条指令将PSP中INT 20H 指令的段地址及偏移地址压入堆栈: PUSH DS ;保护PSP段地址 MOV AX,0 ;保护偏移地址0 PUSH AX 这样,当程序执行到主程序的最后一条指令RET时,由于该过程具有FAR属性,故存在堆栈内的两个字就分别弹出到CS和IP,从而执行INT 20H指令,使控制返回到
DOS
状态。返回
DOS
的标志就是程序
运行
完后出现一个
DOS
的标识符,如C:\>。 (二)非标准方法 也可在用户的程序中不定义过程段,只在代码段结束之前(即CODE ENDS之前)增加两条语句: MOV AH,4CH INT 21H 则程序执行完后也会自动返回
DOS
状态。 此外,由于开始执行用户程序时,DS并不设置在用户的数据段的起始处,ES同样也不设置在用户的附加段起始处,因而在程序开始处使用以下方法重新装填DS和ES的值使其指向用户的数据段: MOV AX,段名 MOV 段寄存器名,AX ;段寄存器名可以是DS、ES、SS之一 四、实验内容与步骤 1、实验内容 编写程序,判断一个年份是否是闰年。 2、实验步骤 汇编语言程序设计上机过程如图1.1所示。 图1.1 汇编语言程序上机过程 (一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件) 例如,编写程序,判断一个年份是否是闰年的汇编语言源程序,可以在
DOS
模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在
Windows
2000或者在
Windows
XP
环境下鼠标单击“开始”→“
运行
”,在“
运行
”中输入“CMD”进入
DOS
模式,
运行
EDIT软件,例如: C> EDIT ABC.ASM 进入EDIT的程序编辑画面时,输入汇编语言源程序如下: DATA SEGMENT INFON DB 0DH,0AH,'Please input a year: $' Y DB 0DH,0AH,'This is a leap year! $' N DB 0DH,0AH,'This is not a leap year! $' W DW 0 BUF DB 8 DB ? DB 8 DUP(?) DATA ENDS STACK SEGMENT 'stack' DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,INFON MOV AH,9 INT 21H LEA DX,BUF MOV AH,10 INT 21H MOV CL, [BUF+1] LEA DI,BUF+2 CALL DATACATE CALL IFYEARS JC A1 LEA DX,N MOV AH,9 INT 21H JMP EXIT A1: LEA DX,Y MOV AH,9 INT 21H EXIT: MOV AH,4CH INT 21H DATACATE PROC NEAR LEA SI,BUF+2 MOV BX,0 X3: MOV AL ,[SI] SUB AL ,30H MOV AH,0 XCHG AX,BX MOV DX,10D MUL DX XCHG AX,BX ADD BX,AX INC SI LOOP X3 MOV W,BX RET DATACATE ENDP IFYEARS PROC NEAR PUSH BX PUSH CX PUSH DX MOV AX,W MOV CX,AX MOV DX,0 MOV BX,4 DIV BX CMP DX,0 JNZ LAB1 MOV AX,CX MOV BX,100 DIV BX CMP DX,0 JNZ LAB2 MOV AX,CX MOV BX,400 DIV BX CMP DX,0 JZ LAB2 LAB1: CLC JMP LAB3 LAB2: STC LAB3: POP DX POP CX POP BX RET IFYEARS ENDP CODE ENDS END START (二)用
汇编程序
MASM将ASM文件汇编成目标程序文件(OBJ文件) 当源程序建立以后,仍以ABC.ASM程序为例,我们用
汇编程序
MASM对ABC.ASM源程序文件进行汇编,以便产生机器码的目标程序文件ABC.OBJ,其操作步骤如下: C>MASM ABC Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved. Object filename [ABC.OBJ]: Source listing [NUL.LST]:ABC Cross-reference [NUL.CRF]:ABC 50674 + 450574 Bytes symbol space free 0 Warning Errors 0 Severe Errors 由此可知,
汇编程序
调入后,首先显示版本号,然后出现三个提示行。 第一个提示行为:Object filename [ABC.OBJ]: 这是询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示),这是我们汇编的主要目的。 第二个提示行为: Source listing [NUL.LST]:
8086_web网页_
8086意:在实现过程中可能会遇到这样的情况:你用的是
DOS
BOX虚拟机进行编程,然后进行测试之后,一切通过。但是移植到32位win7的虚拟8086就没有任何声音了。这是我亲身体会的经历。自己也不是很清楚这到底是问什么,会因为声卡的设计不一样?还是说不同的声卡有不同的控制方式?就是建议大家如果合作用汇编编写程序时,要注意平台的统一,不然会出现许多问题。(上面的程序实在
DOS
BOX中测试成功的~~)ps:2013/11/27 :经过努力的调试和发现,结果找到了为什么在
dos
box下可以发声在cmd中不能的原因。因为
dos
box虚拟机的cpu频率比较小,所以可以一次顺利的读取到每个频率点,但是在
windows
xp
下
运行
时,cpud的频率要比
dos
box下的频率快的多,所以当读到第一个频率还没有来得及发声,有读到了下一个频率,以至于频率表已经不是一个完整的频率了,所以不能发声。所以如果要在
windows
xp
下
运行
发声,必须给每一次读取频率的下一条语句添加一个延迟函数。
操作系统的实验环境与引导
我们的OS实验,以安装了
Windows
和Linux操作系统的PC机为开发平台,以汇编语言和C语言为编程工具。 具体来说,以
Windows
XP
SP3(或
Windows
7 SP1)为主平台,在
Windows
中安装虚拟机软件VMware,并在该虚拟机中安装Ubuntu Linux,还在此Linux中安装GCC编译器(用于编译C语言程序)和NASM
汇编程序
,源程序可以使用Linux自带的gedit或vi编写。 在
Windows
中,也安装NASM软件用于编译汇编语言程序,安装文本编辑器Notepad++用于编写汇编语言和C语言的源代码,安装WinHex软件用于文件和磁盘的二进制编辑,安装小软件FloppyWriter用于写磁盘映像,安装WinImage软件用于将实验文件放入磁盘映象。 在
Windows
中安装虚拟机软件Bochs,并下载
DOS
系统软盘映像文件,利用创建的磁盘映象进行各种实验程序的
运行
和调试。还可利用
Windows
自带的debug程序进行简单的
汇编程序
调试。
1操作系统复习.doc
操作系统和应用软件在计算机中
运行
时,正确的是应用软件调用操作系统功能 操作系统中多任务处理的叙述中,前台任务和后台任务都能得到CPU的及时响应 当计算机内存不够时,系统可以自动"扩充"内存,为用户提供一个容量比实际内存大的 多的存储空间,所采用的技术虚拟存储器技术 根目录中只能用来存放文件夹,不能用来存放文件,是错的
Windows
操作系统在执行32位应用程序时,采用的是按时间片轮转的调度方法
汇编程序
是指由汇编语言编写的程序,是错的 用多种不同的汇编语言编写一个程序称为"交叉汇编",是错的 任何程序的语言处理系统都是相同的,是错的 在
Windows
95/98/2000/
XP
操作系统环境下,均可以
运行
MS-
DOS
应用程序 算法必须有多个输入量,至少有一个输出量(包括参量状态变化),是错的 数据结构仅研究数据的逻辑结构和存储结构,不考虑在该结构上的数据运算,是错的 Linux操作系统是由美国Linux公司开发的操作系统,是错的 C++是面向过程的语言,VC++是面向对象的语言,是错的 程序的控制结构有顺序选择重复三种 SQL Server,汇编器,Linux,Oracle,Sybase,
mouse
dos
网克工具
1.1为VISTA、
XP
、2000系统添加纯
DOS
模式。Mouse
Dos
能为您的系统(包括Vista、
XP
、2000)添加纯
DOS
模式入口,一旦系统出现问题您可以在
Windows
的启动菜单中选择Mouse
Dos
进入
DOS
模式进行一键恢复、磁盘分区、格式化、磁盘克隆、数据恢复、系统安装等一系列日常维护工作。Mouse
Dos
是经过精心设计,他能很好地支持装VISTA、
XP
双系统的电脑,这是市面上其他同类产品所不具备的。 1.2智能化的全中文图形界面一键恢复。 Mouse
Dos
工具箱包括了一款全中文图形界面的一键恢复,当您的系统崩溃时您只需要按一下F5功能键就可以恢复到计算机正常状态了。Mouse
Dos
一键恢复具有市面上其他一键恢复程序所不具备的自动搜索已保存的镜像文件,自动选择剩余空间最大分区保存系统镜像等高级功能。完美支持NTFS分区。 1.3完美支持SATA光驱的
DOS
工具箱,集成了多种
DOS
下的分区、克隆、密码破解工具。 集成工具如下: 分区大师8.05繁体中文版 分区大师8.05服务器版(支持Vista的NTFS分区) 分区工具DiskGen2.00中文版 分区工具GDisk11.0.1 克隆工具SymantecGhost企业版11.0.1 破解工具KILLCMOSCMOS密码破解工具 破解工具KILLNTVista、
Windows
XP
、2000、2003系统密码破解工具。 1.4先进的、向导式的万能网络克隆模块,真正实现“一键网克”。独创的服务器端主控网克模式方便易用,所有网克的设置工作(比如设置克隆哪个分区、哪个硬盘、是创建镜像还是网络克隆等)都可以在服务器端
运行
“Mouse
Dos
网络克隆设置向导”完成,客户端只需要在计算机启动时进入Mouse
Dos
网络克隆模块即可,客户机就会自动加入服务器端。 一般的网络克隆工具使用的都是SymantecGhost自带的DETPCI.SYS现实网卡自动检测的,因此在网卡的识别数量上都取决于DETPCI.SYS,如果Ghost不出新版本,那么网卡识别数量也是无法增加的。而Mouse
Dos
工具箱中的网络克隆模式中的网卡识别程序是我们自己用汇编语言写成的,因为网卡识别数量基本是无限的,对于无法识别的网卡,您只需要去我们的论坛HTTP://WWW.MOUSE
DOS
.COM/BBS报一下网卡的VenderID和DeviceID即可。 1.5全中文的
DOS
TCP/IP网络启动盘,轻松访问
XP
网上邻居。 Mouse
Dos
工具箱还集成了一款非常非常方便的支持
DOS
下使用TCP/IP协议联网的全中文网络启动盘,使用它你就可以轻松地在
DOS
平台下访问网上邻居的共享资源。支持约330种网卡,并可设置网络访问用户名、密码、IP地址、网关地址、址等高级特性,是最好的
DOS
联网工具。当只有一台电脑需要安装系统时您完全可以不必使用相对麻烦网络克隆,只需进入网络启动盘,
运行
类似于NetUseZ:\\\\server\\f的网络共享命令来访问其他电脑共享的Ghost文件进行伪“网络克隆”了。 1.6加载任意软盘镜像。 Mouse
Dos
包含了一个加载任意软盘镜像的工具-软盘镜像加载器,使用它您就可以选择任意的软盘镜像文件启动。
汇编语言
21,458
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章