问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

汇编语言上机环境...?

发布网友 发布时间:2022-04-30 14:38

我来回答

5个回答

热心网友 时间:2023-10-06 05:02

Subject:汇编语言上机指导及例示

Editor:admin Time:2004-3-20 20:18 Read:52369 Score:8 Print

Preface:
从如何建立源文件到进行调试作下简要的介绍......

Content:
从如何建立源文件到进行调试作下简要的介绍,并配例题说明。由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出
汇编语言上机过程:
一、上机前的软件准备:
MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)
文本编辑器 (如:EDIT.COM , TURBO.EXE , TC.EXE , C.EXE 等)
汇编程序 (如:MASM.EXE , ASM.EXE 等)
连接程序 (如:LINK.EXE 等)
调试程序 (如:DEBUG.EXE 等)
二、汇编程序建立过程:
a.建立汇编源程序—通过———→b.编译为目标文件— ↓┬—→d.连接为可执行文件

│ c.不通过,重新修改(语句错误) ↓
├——————————————————————┘ ↓
↑ f.不正确,用调试工具调试,重新修改(逻辑错误) ↓
└————————————————————————————←e运行
↓正确
g.完成
三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明
PROCEDURE a:建立汇编源程序(即:建立 文件名.asm)
这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
PROCEDURE b:编译目标文件(即:编译为.obj .lst .crf文件)
这个过程计算机将把你编的正确的源代码编译为机器语言、程序清单及交叉引用表的目标文件。如果此时你的程序有语句错误,系统将报错,并指出在第几行,什么类型的错误,你可根据提示去逐一修改。现介绍具体过程:
在DOS提示符下键入MASM filename回车
(注:你系统内的汇编程序为MASM.EXE,如果你系统的汇编程序为ASM.EXE时,便将命令变为ASM filename回车。其中filename为你刚才在PROCEDURE a 中建立的文件名)
这时汇编程序的输出文件可以有三个(分别:.obj .lst .crf),便会出现三次提问,在这可以一路回车即可。下面显示的信息是源程序中的错误个数,如果为0则表示顺利通过,就可进行进程c。但如果不为0就说明有错误,并指出错误出现的行,可依据这个提示去进行修改。但如果错误太多还未等看清就显示过去了,可用如下命令形将错误信息存于一个你指定的文件,再用文本编辑器去查看。 MASM filename >filen (filen为你起的一个没用过的文件名,用以存放出错信息)以后可查看filen来得到出错信息。
PROCEDURE c:编译不通过,重新修改(错误类型:源程序语句不合法)
在执行过PROCEDURE b后,如有出错信息时,就要我们自己按PROCEDURE c去做,而不能跳跃到PROCEDURE d去,如果强行执行PROCEDURE d将无任何有效结果。
现在就开现找错吧!首先要清楚,在PROCEDURE b中检测出的错误均为每一条语句的语法或用法错误,它并不能检测出程序的逻辑设计(语句按排位置)错误,所以就要记好出错的行号。在记录行号后,就应再次执行PROCEDURE a,这时和操作应是打开已编好的源程序(以EDIT为例:在DOS提示符下键入:
EDIT filename.asm回车),依据行号进行修改并存盘,再次进行汇编,直至PROCEDURE b通过为止。便可继续向下执行PROCEDURE d。
下面给出一些常见出错信息,以便查对:
1、Register already defined 汇编内部出现逻辑错误
2、Unknown symbol type 在符号语句的类型中,有些不能识别的东西
3、Symbol is multi-defined 重复定义一个符号
4、Symbol not defined 符号没有定义
5、Syntax error 语句的语法与任何可识别的语法不匹配
6、Symbol is reserved word
企图非法使用一个汇编程序的保留字(例:定义add为一变量)
7、Not proper align/combine type SEGMENT参数不正确
8、One operand must be const 这是加法指令的非法使用
9、Operands must be same or 1 abs 这是减法指令的非法使用
10、Already have base register 试图重复基地址
11、Illegal size for item 引用的项的长度是非法的,(如:双字移位)
12、Illegal register value 指定的寄存器值不能放入“reg” 字段
13、Must be AX or AL 某些指令只能用AX或AL
14、Improper use of segment reg 段寄存器使用不合法(如:mov ds,0)
15、Division by 0 or overflow 给出一个用0作除数的表达式
16、value is out of range 数值大于需要使用的
17、CS register illeal usage 试图非法使用CS寄存器
18、DUP is too large for linker
DUP嵌套太长,以至于从连接程序不能得到所要的记录
PROCEDURE d:连接为可执行文件(即:连接为.exe 或.com文件)
在这个过程中一般没有意外,如果有也就是文件名打错了。
形式:在DOS提示符下: LINK filename 回车
PROCEDURE e:运行编译好的可执行文件
当PROCEDURE d通过后,会产生一个可执行文件,这时只需运行这个程序,看它是否按你所想象那样得出结果。在试运行期间,要尽量试一些临界状态,看 程序是否运行稳定、结果是否正确。如一切正常,便可进入PROCEDURE g了。
可最怕的是不OK,程序产生一些莫名其妙的结果(你可不要以为是你的计算机不听你的指挥,其实它是在一丝不苟地按照你编的程序执行。我以前总以为我的计算机出了毛病),如果是在考场上这时千万不要慌,稳住自己的情绪,先不要看计算机,静几分钟(反正时间多得是)。这时就要用到最关键、最常用的一步了,进行PROCEDURE f 。
PROCEDURE f:用调试工具调试,重新修改(逻辑错误)
在这我将介绍用DOS中自带的调试程序DEBUG.EXE来进行程序调试、检查错误.
首先我们要了解DEBUG的基本用法:
1、用于调试程序时的输入格式:
DEBUG FILENAME.??? 回车
其中FILENAME是主文件名,???是扩展文件名,例如我们在此前已编译好了一个文件,它的名子为:djx.exe 要对它进行调试时就在DOS提示符下
打:DEBUG djx.exe 回车,便可见到 '-' 提示符,如无任何提示说明正确,可进行调试。
2、DEBUG调试过程中用到的DEBUG命令介绍:
(注:在指令中用 [] 括起来的内容可缺省)
1)D(Dump)显示指定内存单元内容(一般用来看数据数的内容,即DS段):
格式:d[地址] 从[地址]指定的内存单元显示128个字节的内容
[地址]缺省时,显示上一个DUMP命令后面的内容
d 地址范围 显示指定范围内的内存内容。
示例:-d100 显示从DS段100H开始的内容(以十六进制显示)
2)E(Enter)修改存储单元内容(一般在DS段)
格式:e 地址 [数据] 用给定的[数据]代替指定范围的存储单元内容
e 地址 修改一个指定内存单元的内容
示例:-e ds:200 'djx'FF00AA 就可将DS段从200开始至205的内容替
换为64 6A 78 FF 00 AA
3)G(GO)运行命令
格式:-g [=地址][断点地址1 [断点地址2 ...[断点地址10]]]
从指定[地址]开始执行程序(如地址缺省从当前CS:IP开始),运行至[断点地址1]停止,显示所有寄存器及标志位内容与下一条指令,如后面还有断点,可键入g,继续执行。
示例:-g001a 则执行从当前cs:ip至001a的指令
注意:地址设置必须从指令的第一字节设起。
4)T(Trace)执行一条语句
格式: -t [=地址] 从指定[地址]起执行一条语句后停下来,显示所有寄存器内容及标志位的值与下一条指令。如[地址]缺省则从当前CS:IP开始执行
-t [=地址][value] 从指定地址起执行value条指令后停止。
5)P(proceed)执行一个循环;一个软中断或call子过程
格式:-p [=地址][n]
示例: mov ah,02h
mov dl,41h
int 21h
此时用: -p 回车后系统将显示一个字符A,如果在这不用P,而改用T,那么系统将进入INT 21H的中断调用中,出不来,这时你会误以为你的程序编错了,一定注意!!
6)R(register)显示并可修改寄存器内容
格式:-r 显示所有寄存器内容
-r 寄存器名 修改指定寄存器内容(可改:AX,BX,CX,DX,SP,
BP,SI,DI,CS,DS,ES,SS,PC,IP,F)
7)U(Unassemble)反汇编
格式:-u [地址] 从指定[地址]反汇编32个字节,若[地址]缺省则从当前地址汇编32个字节。
-u 地址范围 对指定范围内的存储单元进行反汇编
以上是在调试程序中可能用到的DEBUG命令解释,DEBUG中还有其它命令,在检查程序中不会用到,就不再介绍了。
PROCEDURE g:程序编好,那就一切OK!!!交卷过关了!大吃、大睡。
下面给出一个有病句的程序,希望大家和我一起调试、修改并通过:
先执行PROCEDURE a编辑源程序
实现功能:在屏幕上显示:Hello world
My name is DJX
文件名:error.asm
行号: 源程序代码:
1 data segment
2 out1 db 'Hello world'
3 ax db 'My name is DJX'
4 data ens
5
6 code segment
7 assume cs:code;ds:data
8 lea dx,out1
9 mov ah,2
10 int 21h
11
12 mov dl,0ah
13 mov ah,2
14 int 21h
15 mov dl,0dh
16 moo ah,2
17 int 21h
18
19 lea dx,ax
20 mov ah,
21 int 21h
22 code ends
在编辑完执行PROCEDURE b用masm进行编译:masm error回车后显示如下:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
Open segments: DATA
error.ASM(3): warning A4016: Reserved word used as symbol: AX
error.ASM(4): error A2105: Expected: instruction or directive
error.ASM(16): error A2105: Expected: instruction or directive
error.ASM(19): error A2049: Illegal use of register
End of file encountered on input file
error.ASM(23): warning A4085: End of file, no END directive
51566 + 406450 Bytes symbol space free
2 Warning Errors
4 Severe Errors
说明这个程序有错误,并在第3,4,16,19,23行有错,
我们再执行PROCEDURE c去逐一检查
第三行:3 ax db 'My name is DJX'
它的错误在于AX不能作为变量名,更正:
3 out2 db 'My name is DJX'
注意刚才我们定义AX为变量时在后面的程序中用过'变量AX'在第19行
19 lea dx,ax
在出错报告中也报第19行错,因为不能将AX的有效地址赋给DX,更正:
19 lea dx,out2
这样一下就解决了两个错误
第四行:4 data ens
这行为一个段的结束,但语句漏打了字母,更正:
4 data ends
第十六行:16 moo ah,2
这行也是语句打错,更正:
16 mov ah,2
第二十三行:
出错信息:error.ASM(23): warning A4085: End of file, no END directive
说明本程序没有结束伪操作,更正:
加入:在第七、八行加入地址标志: start:
原23 end start
执行PROCEDURE a将源程序修改如下:
data segment
out1 db 'Hello world'
out2 db 'My name is DJX'
data ends
code segment
assume cs:code;ds:data
start:
lea dx,out1
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,out2
mov ah,9
int 21h
code ends
end start
再次进行PROCEDURE b进行编译,屏幕显示:
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved.
Object filename [error.OBJ]:
Source listing [NUL.LST]:
Cross-reference [NUL.CRF]:
51524 + 406492 Bytes symbol space free
0 Warning Errors
0 Severe Errors
本程序在语句上已无错误。
再执行PROCEDURE d连接为可执行文件(link error回车),屏幕显示:
Microsoft (R) Overlay Linker Version 3.60
Copyright (C) Microsoft Corp 1983-1987. All rights reserved.
Run File [ERROR.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment
这时error.exe可执行文件已存在,可以执行PROCEDURE e来运行看一看是否正确
在dos提示符下键入:error回车(小心!!!)
屏幕显示:乱码,并死机。reset My computer!
说明程序在逻辑上有错误,并且严重。
这是就要用PROCEDURE f,用调试工具调试,查找错误。
在DOS提示符下键入:debug error.exe回车
屏幕出现 - 提示符,这时就可以用DEBUG的命令来找错误了,
我首先用d命令来查看数据区和内容,发展所定义的两个字符串并不在数据段的段首,而在数据段内的100h位置上,这时才想起masm有一个不成文的规定,那就是在定义完数据段后,所定义的变量均向后100h个单元,需要我们将ds段寄存器置位,在程序的start:后面加上如下指令:(执行PROCEDURE a)
mov ax,data
mov ds,ax
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
换行
My name is DJX及乱码,并死机。(又要重新启动!)
再次执行PROCEDURE a检查程序,发现:
1.汇编语言有规定每个字符串应由$结尾
2.在输出第一个串的语句中的AH子功能号应为09H
将以上两点改正。
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello world
My name is DJX并死机,不能返回DOS
原因分析,在程序中没有返回DOS的指令,更正:
用PROCEDURE a来进行编辑:
用DOS 21H中断的4cH子功能便可返回DOS,在code ends前加:
mov ah,4ch
int 21h
再执行PROCEDURE b,PROCEDURE d,PROCEDURE e来运行程序,
屏幕显示:
Hello word
My name is DJX
并返回DOS
成功!
这样一个程序就调试完成,并正确。
下面是正确的源程序:
data segment
out1 db 'Hello world$'
out2 db 'My name is DJX$'
data ends
code segment
assume cs:code;ds:data
start:
mov ax,data
mov ds,ax
lea dx,out1
mov ah,9
int 21h
mov dl,0ah
mov ah,2
int 21h
mov dl,0dh
mov ah,2
int 21h
lea dx,out2
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
以上这个程序很简单,只是为了说明实现汇编语言的上机编程及调试过程,汇编语言须多练习才能掌握它的特点,以便顺利通过考试

参考资料:忘记是什么网址了,感觉这个材料很不错,但是不是原创,谢谢

热心网友 时间:2023-10-06 05:03

一般是用masm611,DOS环境安装,
http://dl-sh-ctc-1.pchome.net/08/84/Masm611.zip
这里可以下。
---------------------------------------
你先编写好程序,然后用masm (程序名字).asm编译,如果程序有错误的话, 会提示哪一行有错误。

热心网友 时间:2023-10-06 05:03

软件简介:http://ke.baidu.com/view/1264443.htm

下载地址:http://www.gougou.com/search?search=emu8086&id=0

使用方法很简单,就一两个按钮,不需我多说

热心网友 时间:2023-10-06 05:04

说实话,16位的汇编很麻烦。你要学不如学WINDOWS32位编程,有很多好用的调试器,如OLLDBG功能就很强,你可以在友好窗口下随意更改你的程序。用16位就只有DEBUG这样的程序了,那用法*当麻烦。

热心网友 时间:2023-10-06 05:05

初学建议下载 轻松汇编
代码编好以后,点击编译,生成,运行就 好了
汇编语言上机环境...?

1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识...

如何进入汇编语言的上机模式

在“开始”的“运行”中输入“cmd”,之后输入你要保存文件在哪个盘,如:D盘“D:”,创建文件夹用md命令,如创建文件夹masm“md masm”,访问文件夹用cd命令,“cd masm”,之后输入“edit + 文件名.asm”,即可编辑asm文件。

计算机三级上机考试用的什么平台?

除了三级PC技术考汇编语言(操作环境是MASM)其他的三级科目上机都是一道编程题,一般是根据要求编写其中的一个函数,偶尔会让你补充一下main函数(很少),操作环境是VC++ 6.0 英文版

以my.asm为例说明汇编语言上机过程.

汇编语言上机过程可以总结为以下几个步骤:1.用编辑器编辑源程序,保存文件名为.asm;2.用编译程序编译文件.asm,产生文件名为.obj的目标文件;3.用连接程序将.obj文件连接生成.exe可执行文件;4.用调试程序如debug载入.exe文件调试程序,看是否有逻辑错误。这些步骤都是在dos系统或者win系统下的dos(...

汇编语言运行环境是什么?

一般汇编语言是在masm下编辑的,生成exe执行文件,没什么很高要求。汇编语言是从机器语言转换过来的.最早的计算机系统没有可用的高级语言,是直接用0101这样的二进制编码来编程的,这样对绝大多数用户就很不方便,因为这要求对计算机系统的软件和硬件资源要非常了解才可以.记忆量也很大.到后来,大家就用一些符号...

求问汇编语言运行环境是什么?

不需要特别的软件环境,只需要手头有一个汇编语言编译器和一个文本编辑器就够了。文本编辑器推荐使用masm, editplus之类的,可以高亮代码中的关键字,当然如果你愿意用记事本也行。汇编有一些语法,使用汇编语言你需要掌握一些汇编指令,要学汇编的话建议看看《IBM PC汇编语言程序设计》和《Windows环境下32...

高等院校精品课程系列教材·汇编语言内容简介

以下是《高等院校精品课程系列教材·汇编语言》的详细介绍:该教材以Intel 80X86系列微型计算机为平台,MASM 5.0作为主要的汇编上机实验环境,焦点集中在Intel 8086指令系统上。其教学方法独特,采取实例驱动,通过丰富的示例和运行在DEBUG环境下的实例来引导学习。指令系统被巧妙地分散在各个章节中,确保指令...

请问关于NCRE的问题.

科目名称、考核内容、考试形式保持不变。系统环境:三级PC技术上机考试仍为汇编语言,编程环境为MASM4.0/LINK(或TASM/TLINK);三级其它科目上机考试仍为C语言编程,但上机环境由Turbo C 2.0改为 Visual C++6.0。四、关于四级 停考科目:现在的四级将于2007年下半年考试后停考,2008年不再接收新考生...

汇编语言有什么IDE吗?

汇编语言是一种低级语言,一般不像高级语言那样需要使用集成开发环境(IDE)进行编写,而是直接使用文本编辑器编写代码,然后使用汇编器将代码转换成机器语言。因此,汇编语言并没有像高级语言那样常用的 IDE 工具。不过,一些汇编器本身也提供了一些简单的编辑器和调试器,例如 Microsoft 的 MASM 汇编器就...

有什么比较好的汇编开发环境?

1、MASM。微软公司为x86 微处理器家族开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使用DOS环境进行汇编的开发,编译速度快,支持80x86汇编以及Win32Asm,是Windows下开发汇编的利器。2、NASM。全称The Netwide Assembler,是一款基于80x86和x86-64平台的汇编语言编译程序,其设计初衷是为了实现...

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
干杯歌曲介绍 辣椒酱的做法教程 农历4月11日是什么星座生男生女 农历4月11日是什么星座? 索尼LT22I有藏文字体么? 索尼lt22i如何将繁体字变为简体 索尼lt22i显示怎样转换成中文的 索尼LT22i 文字不小心设置成法语了 看不懂 怎么设置回中文 求步骤呀... 贵州有哪些称得上“豪宅”的房子 索尼LT22I有藏文字体么? emu8086字体问题 如何利用proteus来仿真emu8086下编写的EXE程序 动森岛主可以看到你拿了什么吗 抱歉是什么意思 我用exe格式..怎么仿真出现这样? 动森游戏版本怎么看 朋友说抱歉,我爸妈吵架吵得很凶,我没心情回消息”应该怎么回? 在使用软件emu8086时,怎样设置字体大小? 跟相亲男见面后,有几天没联系了,然后刚给我发信息说抱歉,我有合适的再找吧 别耽误我 我该怎么回复呢? 对方说 抱歉刚忙完 我应该回什么? 微机原理教材上的一个程序,为什么在emu8086上会死循环?高手赐教,会不会是EMU8086的问题啊?我用的是4.05版 在emu8086中怎么把反汇编语言变成实际源代码 老师说抱歉 应该怎么回复 proteus7.8用emu8086编译器仿真电路,编译时找不到asm文件的问题,求大神帮帮忙 抱歉,我昨晚喝多了[汗],我怎么回复 如何生成exe文件或com文件,加载到8086中 在protues中 老出错 不好意思可能不太合适抱歉我应该怎么回复她? 朋友,我想问下怎样在proteus中加载emu8086中的程序进行仿真啊??最好能说说具体步骤,呵呵 动森左上角zl是什么 emu8086注册码在哪输 求助,emu8086的编译程序执行错误 苹果7手机刷抖音3个小时怎么样 卡西欧prt 600这款怎么调时间? 苹果7plus抖音想发视频,怎么选不了照片了 关于如何提高继电保护正确动作率的一点心得 我做兼职,今天做一天群众演员,明天酒店服务,工资日结,有的要我身份证正反面,电话号码名字。安全吗? 惠普m1136mfp打印机端口号 学电气工程的感悟 新长安之星473正时图 为什么健康码显示时间 盛星汇群演兼职靠谱吗 继电保护的实习日记可怎么搞? 继电保护用的电流互感器采用什么极性连接 新长安之星473发动机正时链条图 惠普M1136打印机端口? 惠普M1136打印机驱动装不上,老是提示USB未连接,可是我USB连接好了, TP-LINK路由器的“DHCP服务器”功能可以关闭吗? premiere“翻转”效果后面的灰色背景怎么换成白色?如图所示 工厂打工仔,想做点什么改变自己low爆的生活,甚至想去咖啡店拍个微信,去拍个群演,该做点什么呢 电脑打字的时候,上下格移动不了了怎么办?
  • 焦点

最新推荐

猜你喜欢

热门推荐