实验一 DEBUG的使用

合集下载

实验一 Debug常用命令及80x86指令的使用

实验一 Debug常用命令及80x86指令的使用

实验一 Debug常用命令及80x86指令的使用实验目的:通过实验掌握下列知识:1、DEBUG常用命令: A,U,D,E,R,T,G,Q。

2、80x86寄存器: AX/EAX,BX/EBX,CX/ECX,DX/EDX,FLAG,IP/EIP3、80x86常用指令: MOV/MOVSX/MOVZX,ADD/ADC,SUB/SBB,DAA,XCHG等。

内容及步骤:一、DEBUG 命令使用:1、打 DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。

2、用命令 E 18E4:100 'A' 将'A'的ASCII码填入内存。

3、用命令 D 18E4:100 观察内存中的16进制码及屏幕右边的ASCII字符。

4、用命令 E 18E4:100 41 重复上二项实验,观察结果并比较。

5、用命令 E 18E4:100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?6、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

7、用R命令将AX,BX内容改写为1050H及23A8H。

二、808x86常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX2)用U命令检查键入的程序并记录,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

4)用G命令运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

2、加减法指令:1)用A命令在内存100H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。

实验一DEBUG的使用

实验一DEBUG的使用

实验一 DEBUG 的使用实验目的:1.学习使用.学习使用DEBUG DEBUG DEBUG程序的各种命令。

程序的各种命令。

程序的各种命令。

2.掌握.掌握8088/868088/868088/86指令系统指令系统指令系统---------算数指令。

算数指令。

算数指令。

3.掌握用.掌握用DEBUG DEBUG DEBUG调试自编程序的方法。

调试自编程序的方法。

调试自编程序的方法。

4.掌握.掌握8088/8086 CPU 8088/8086 CPU 寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

寄存器的用途和存储器组织及它们之间的关系。

5.掌握内存操作数及寻址方法。

.掌握内存操作数及寻址方法。

6.掌握汇编语言伪操作.掌握汇编语言伪操作:BYTE PTR,WORD PTR :BYTE PTR,WORD PTR。

内容及步骤:一、一、DEBUG DEBUG 命令使用命令使用: :1、 敲 DEBUG 进入进入进入 DEBUG DEBUG 环境,显示提示符环境,显示提示符环境,显示提示符 '_ ' '_ '。

2、 用命令用命令 D100 10F D100 10F 观察内存中的观察内存中的161616进制码及屏幕右边的进制码及屏幕右边的进制码及屏幕右边的ASCII ASCII ASCII字符。

字符。

字符。

3、 用命令用命令 E100 30 31 32 E100 30 31 32 ………… 3F 3F 将30H 30H~~3FH 3FH写入地址为写入地址为写入地址为100H 100H 100H开始的内存单元中,开始的内存单元中,再用再用D D 命令观察结果,看键入的命令观察结果,看键入的161616进制数是什么字符的进制数是什么字符的进制数是什么字符的ASCII ASCII ASCII码码?4、 用命令用命令 F100 10F 'A' F100 10F 'A' 将'A''A'的的ASCII ASCII码填入内存,用码填入内存,用码填入内存,用D D 命令查看结果。

[微机原理与接口技术课件]实验一DEBUG软件的使用

[微机原理与接口技术课件]实验一DEBUG软件的使用

实 验 一 DEBUG 软 件 的 使 用是专为8086/8088汇编语言设计的一种调试工具,是汇编语言程序设计者必须掌握的工具。

具有显示、修改、动态跟踪等功能。

使用它可以对*.COM 、*.EXE文件进行动态跟踪。

DEBUG可以显示和修改内存与寄存器内容,以便在调试中检查程序,查找与改错;亦支持小汇编,直接对小段程序进行汇编;也可对磁盘进行读写。

一、实验目的1.通过实验掌握DEBUG软件的基本使用方法。

2.进一步熟悉、理解8088/8086的寻址方式。

3.掌握数据传送、算术运算、逻辑运算等类指令的基本操作。

二、实验内容与步骤本实验进行前必须保证系统盘上有DEBUG.EXE文件。

进入DEBUG只需在DOS环境下执行 DEBUG命令,即键入DEBUG回车后,屏幕上显示 DEBUG提示符:“_”(短划线)。

操作如下:C:>DEBUG-注: 字符下有下划线的为键入的内容,\代表回车,后面内容均如此.1.程序输入汇编命令(A命令)在输入程序应注意以下几点:(1)输入的数字必须是十六进制数,并且不输入H。

(2)分号后面的内容(注释)不要输入。

(3)不输入标号,条件转移指令中的标号用偏移地址代替。

方法:先用一个离本转移指令的IP不远的但不一定准确的偏移地址代替标号 ,待程序输入且完成反汇编后获得标号所在处的准确的偏移地址时再修改。

在DEBUG提示符下键入A即进入汇编输入状态-A \键入下面的汇编程序13F2:0100 MOV AX,200013F2:0103 MOV DS,AX13F2:0105 MOV SS,AX13F2:0107 MOV BX,205013F2:010A MOV SI,BX13F2:010C MOV DI,305013F2:010F MOV SI,DI13F2:0111 MOV SP,5FFF13F2:0114 MOV CL,1913F2:0116 MOV BL,CL13F2:0118 MOV AH,F013F2:011A MOV CH,AH13F2:011C MOV BYTE PTR [DI],4013F2:011F MOV WORD PTR [SI],010013F2:0123 MOV DL,[SI+01]13F2:0126 MOV DH,[SI+01]13F2:0129 MOV AL,[SI+01]13F2:012C MOV WORD PTR [BX+SI],0022 13F2:0130 MOV [BX+SI+02],BX13F2:0133 MOV [BX+SI+02],BX13F2:0136 MOV BP,[BX+DI+02]13F2:0139 MOV [BX+DI],BX13F2:013B MOV AX,[BP+DI]13F2:013D MOV BL,AL13F2:013F MOV ES,BX13F2:0141 PUSH BX13F2:0142 PUSH DI13F2:0143 PUSH DI13F2:0144 POP CX13F2:0145 POP DX13F2:0146 XCHG BP,AX13F2:0147 XCHG DH,BL13F2:0149 SAHF13F2:014A CMC13F2:014B LAHF13F2:014C STD13F2:014D CLI13F2:014E PUSHF13F2:014F CLD13F2:0150 POPF13F2:0151 INT2113F2:0153 ^C重新回到DEBUG提示符“-”状态,表示汇编命令已结束。

实验一 利用 DEBUG 调试汇编语言程序段

实验一 利用 DEBUG 调试汇编语言程序段

实验名称实验一利用 DEBUG 调试汇编语言程序段一、实验目的1.熟悉 DEBUG 有关命令的使用方法;2.利用 DEBUG 掌握有关指令的功能;3.利用 DEBUG 运行简单的程序段。

二、实验要求1.仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;三、实验环境DOS 操作系统四、实验内容1.进入和退出 DEBUG 程序;1)开始—运行点确定进入DOS命令窗口图1进入DOS命令窗口2)在命令窗口中输入 dubug 进入 debug 程序图2进入 debug 程序3)进入 debug 窗口后,输入 q 命令退出 debug图3退出 debug2.学会 DEBUG 中的1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段, 0100 开始的 128 个字节内容-D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H)图4默认显示 DS 段内容-D DS:100 ;显示 DS 段, 0100H 开始的 128 个字节内容图5显示 DS 段内容-D CS:200 ;显示 CS 段, 0200H 开始的 128 个字节内容图6显示 CS 段内容-D 200:100 ;显示 DS 段, 0200:0100H 开始的 128 个字节内容图7显示 DS段0200:0100H内容-D 200 ;显示 DS 段, 0200H开始的128个字节内容图8显示 DS段0200H开始的内容-D 100 L 10 ;显示 DS 段, 100H 开始的 100H 个字节内容图9显示 DS段100H开始的100H字节内容2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45-D 100,L08结果:073F:0100 41 42 43 44 48 47 46 45-e 100 修改内存内容-d 100,L08 查看刚才修改的内存内容图10 修改和查看DS段100H开始的80H字节内容例 2: -E 100073F:0100 41. 42 : 42 是操作员键入此命令是将原 100 号内存内容 41 修改为 42,用 D 命令可察看。

汇编实验

汇编实验

实验一DEBUG 命令的使用【实验目的】1.学习使用DEBUG程序的各种命令。

2.掌握用DEBUG调试自编程序的方法,为以后实验打下基础。

【实验内容】1、请自学并完成如下内容:(1)DEBUG的使用方法(1)(2)DEBUG的使用方法(2)2、用DEBUG调试、运行可执行程序。

1)进入DEBUG后,首先用命令R查看当前DS和IP寄存器内容,记录此值。

2)学习R,D,A,U,T,P,G命令的使用。

3)用命令A汇编下列指令,并判断指令正误并说明原因。

(1)LEA DI,[AX](2)MOV DS,2010(3)PUSH AL(4)MOV [BX],03.用A命令汇编下列程序段,完成将DS:2000开始的5个字节内存内容相加,并把相加的结果存放在DS:2005内存单元中,将程序写到硬盘上,然后用DEBUG调试﹑运行该程序,查看运行结果,观察程序段能否完成指定功能,若不能,说明原因。

2000【预习要求】1、仔细阅读试验指导的“前言”、“试验环境与上机步骤”;2、自学“DEBUG使用简介”、“经典DEBUG”;2、计算下列表达式,并思考如何运行程序验证它们45H +70H =_____ ,OF =_____ ,CF =_____ ;F6H +2AH =_____ ,OF =_____ ,CF =_____ 。

【报告要求】1、每个实验内容的实验调式结果、试验分析以及试验问题回答,需有必要的屏幕截图。

2、回答思考题。

3、提交电子版试验报告。

4、雷同的实验报告将不分青红全部被判为0分。

【实验提示】1)DEBUG的进入⑴如果是首次进入DEBUG编程,则只要在DOS提示符下键入DEBUG ↙,即可进入DEBUG环境,显示提示符“-”。

⑵如果要对某个程序使用DEBUG进行调试,只要在DOS提示符下键入DEBUG 文件名↙,即可进入DEBUG环境,显示提示符“-”。

2)程序的汇编与反汇编⑴源程序可以在DEBUG下,用汇编命令A输入到内存中,只需在DEBUG提示符“-”下,键入汇编命令A ↙,并在显示“段寄存器地址:偏移地址”后面键入你自己编写的程序,每键入一条,按一次回车键。

实验一Debug命令的使用

实验一Debug命令的使用

实验一Debug命令的使用实验一Debug命令的使用一、实验说明1、 DEBUG简介DEBUG.EXE是DOS提供的用于调试可执行程序的一个工具软件。

在汇编语言程序调试中很常用。

DEBUG的提示符是“-”,所有DEBUG调试命令军在此提示符下输入。

DEBUG命令都是一个字母,后跟一个或多个参数,也可使用默认参数。

DEBUG命令的使用注意问题:(1)字母不分大小写(2)只使用十六进制数,但没有带后缀字母“H”(3)命令如果不符合DEBUG的规则,则将以“error”提示,并以“^”指示出错位置。

(4)每个命令只有按下回车键后才有效,可以用Ctrl+Break终止命令的执行。

2、 Debug的调入和退出以Windows环境为例,点击“开始/运行…”,在“运行”对话框中输入命令:cmd,然后点击“确定”,进入DOS命令行状态,如:C:\Documents and Settings\mjy>然后输入命令:>Debug进入Debug调试状态,出现Debug命令提示府“-”,在此提示符下可运行所需要的Debug 命令了。

退出Debug的命令:Q3、 Debug常用命令(1)汇编命令A,格式为:- A [地址]功能:从指定地址开始允许输入汇编指令,并将该指令汇编成机器指令代码从指定地址开始存放。

若不指定地址,则系统从默认的地址开始存放。

按回车键退出汇编状态应用:用于调试一条指令或几条指令组成的一个程序段。

(2)显示和修改寄存器命令R,格式为:- R [寄存器名]功能:若指定寄存器,则显示指定的寄存器的内容,并可进行修改;若不要修改,则按Enter 健。

若未指定寄存器,则默认为显示所有寄存器的内容。

应用:常用于通过寄存器的值查看指令的执行结果。

(3)内存单元内容的命令E,格式为:- E 地址[内容表]功能:若指定内容表,则用内容表中的内容代替指定地址开始的存储单元的值;否则,从指定地址开始逐个单元显示其内容,并等待用户修改,按空格键则继续显示下一单元的值,按回车键结束。

debug+的使用

debug+的使用
格式: D [<地址>/<范围>] (1) D <地址> (2) D <范围> (3) D 功能:以两种形式显示指定范围的内存内容。一种形式为十六 进制内容,一种形式为以相应字节的内容作为ASCII码的字符, 对不可见字符以‘.’代替。
如果想知道内存10000H处的内容,可以用"d 段地址:偏移 地址"的格式来查看,如输入 -d 1000:0 使用 d 1000:9查看1000:9处的内容。 使用 d 1000:0 9查看1000:0-1000:9的内容 一进入Debug,可直接使用D命令直接查看,将列出Debug预设 的地址处开始128个字节单元的内容
汇汇编编语语言言程程序序设设计计实验
四、Debug常用命令
? 显示 Debug 命令列表。
T 执行一条指令,然后显示
R 显示或改变一个或多个寄 所有寄存器的内容
存器的内容
P 执行循环、重复的字符串
D 显示查看内存中的内容。 指令、软件中断或子例程。
E 从指定地址开始,将数据输 不跟踪内部。
入到内存,即改写内存的内容。
汇汇编编语语言言程程序序设设计计实验
3、E命令
格式: E <地址> [<单元内容表>] (1) E <地址>
功能: 不断显示地址,可连续键入修改内容,直至新地址出现后 键入回车Enter为止。 (2) E <地址> <单元内容表> 其中<单元内容表>是以空格分隔的十六进制数,或用’或” 括起来的字符串,或者是二者的组合。
功能:将<单元内容表>逐一写入由<地址>开始的一片单元。 如将内存1000:0-1000:9单元中的内容分别写为0、1、2、3、

实验一 DEBUG的使用

实验一 DEBUG的使用
三.对以下源程序进行调试,记录下每一条指令的目标代码,相应寄存器变化情况和程序的最终执行结果。
源程序:MOV AL,30H
MOV BL,26H
ADD AL,BL
PUSH AX
POP DX
MOV AH,02H
INT常用指令练习
1、传送指令
1)用A命令在内存100H处键入下列内容:
0AF4:0108 int 21
0AF4:010Amov dl,43
0AF4:010Cint 21
0AF4:010E int 20
0AF4:0110
-r
AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=0AF4 ES=0AF4 SS=0AF4 CS=0AF4 IP=0100 NV UP EI PL NZ NA PO NC
:0206 CD20 INT 20H ;结束
步骤:a.用E命令将目标代码写入内存CS:0200H~0207H
—E DS:200 B2,33,B4,02,CD,21,CD,20
b.用G命令从200H开始执行。
—G=CS:200
屏幕显示:
3
Program terminated normally.

c.用U命令反汇编
(2)用键盘,将AX,BX,CX,DX及DS,ES清0。
2.简单程序的执行:
(1)用E命令输入一段程序并执行,其源程序,目标代码及地址分配如下:
CS:0200 B233 MOV DL,33H ;将十六进制数‘33’存入DL中
:0202 B402 MOV AH,02H ;DOS2号功能调用
:0204 CD21 INT 21H ;屏幕显示DL内容
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 DEBUG的使用实验目的:1.学习使用DEBUG程序的各种命令。

2.掌握8088/86指令系统---算数指令。

3.掌握用DEBUG调试自编程序的方法。

4.掌握8088/8086 CPU寄存器的用途和存储器组织及它们之间的关系。

5.掌握内存操作数及寻址方法。

6.掌握汇编语言伪操作:BYTE PTR,WORD PTR。

内容及步骤:一、DEBUG 命令使用:1、敲 DEBUG 进入 DEBUG 环境,显示提示符 '_ '。

2、用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。

3、用命令 E100 30 31 32 …… 3F 将30H~3FH写入地址为100H开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码?4、用命令 F100 10F 'A' 将'A'的ASCII码填入内存,用D命令查看结果。

5、用命令 F110 11F 41 将41H 填入内存,用D命令观察结果并比较。

6、用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。

7、用R命令将AX,BX内容改写为1234H及5678H。

8、用H命令检查下列各组16进制数加减结果并和你的手算结果比较:(1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758,347FH二、8088常用指令练习1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,34MOV AL,56MOV CX,75ABXCHG AX,CX2)用U命令检查键入的程序,特别注意左边的机器码。

3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

2、加减法指令:1)用A命令在内存200H处键入下列内容:MOV AH,34MOV AL,2EADD AL,AHSUB AL,78MOV CX,1234MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX2)用U命令检查键入的程序及对应的机器码。

3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。

思考题:这次运行还是打入T,行不行?如何单步运行上述小程序?用R命令检查一下IP的内容。

注意T命令与IP的关系。

3、带进位加减法:1)用A命令在内存300H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,89MOV CH,56MOV CL,98ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,342)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。

3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之。

4、BCD码加减法1)内容:MOV AL,58ADD AL,25DAA2)要求:用A 命令键入,U命令检查,T命令逐条运行并记录有关寄存器及AF内容。

三、内存操作数及各种寻址方式使用:1)用A命令在内存400H处键入下列内容,并用U命令检查:MOV AX,1234MOV [1000],AXMOV BX,1002MOV BYTE PTR[BX],20MOV DL,39INC BXMOV [BX],DLDEC DLMOV SI,3MOV [BX+SI],DLMOV [BX+SI+1],DLMOV WORD PTR[BX+SI+2],28462)用T命令逐条运行这些指令,每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。

注意:D命令显示结果中右边的ASCII字符及双字节数存放法。

思考题: 有关指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。

四、DEBUG下汇编运行程序方法用A命令汇编程序,编程完成将DS:1000开始的10个字节的内存单元的内容相加,并把相加结果存放在DS:200A 内存单元中,用DEBUG调试运行该程序,并察看运行结果。

内容:MOV CX,0AHMOV AL,0MOV BX,1000LL: ADD AL,[BX]INC BXDEC CXJNZ LLMOV [BX],ALINT 3步骤:1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LL的实际地址,在键入JNZ指令时LL用实际地址值代替。

2)用U命令检查键入的程序及对应的机器码。

3)用E1000 01 02 03 04 05 06 07 08 09 0A将1000H开始的前10个内存单元的内容修改为01,02,03,04,05……0A,用D命令查看修改结果。

4)用T命令逐条运行上述小程序指令,检查并记录有关寄存器、存储单元内容及ZF情况。

5)用F2000l0A 02 03 04 05 ……0B 将1000H开始的10 个内存单元的内容修改为02,03,04,05……0B。

用D命令查看修改结果。

6)用G=100 全速运行上述小程序,用D1000 100F 查看运行结果。

思考题:可否随意在DEBUG提示符“-”后不带参数发出命令G?什么情况下使用命令G时,可不用“=”给出执行的首地址?实验报告:1、列出8088常用指令练习部分的逐条运行记录。

2、列出DEBUG下调式运行小程序的运行步骤和运行结果。

3、回答思考题。

附:DEBUG 使用:1、打 DEBUG 进入 DEBUG,显示提示苻 '_ '。

2、退出DEBUG命令:Q3、显示内存命令:D 起始地址结束地址4、修改内存命令:E 起始地址,连续修改打空格键。

打回车键退出E命令。

5、检查寄存器命令:R标志位显示 1 0CF CY NCZF ZR NZSF NG PLAF AC NAOF OV NVPF PE PODF DN UPIF EI DI6、修改寄存器命令:R 寄存器名7、小汇编命令:A 起始地址,不输入指令打回车键退出A命令。

8、反汇编命令:U 起始地址结束地址9、文件命名命令:N 盘号:文件名10、读文件命令:L 内存地址11、写文件命令:W 内存地址10、读扇区命令:L 内存地址盘号(0--A:,1--B:) 扇区号扇区数11、写扇区命令:W 内存地址盘号扇区号扇区数12、运行命令:G=起始地址结束(断点)地址13、单步命令:T=起始地址运行指令数,进入子程序内部。

14、单步命令:P=起始地址运行指令数,不进入子程序内部。

15、内存搬家命令:M 起始地址结束地址目的地址实验二数码转换程序实验目的:1、掌握二进制和十进制数转换程序的编制和调试。

2、掌握批处理文件的编制及使用。

3、熟悉双字节乘法的编程方法。

实验内容及步骤:一、数码转换程序1、将一个十六位二进制数转换成十六进制数显示。

CODE SEGMENTASSUME CS:CODEBEGIN: MOV BX,1011000101010111BMOV CH,4MOV CL,4ROLT: ROL BX,CLMOV DL,BLAND DL,0FHCMP DL,9JLE LADD DL,7L: ADD DL,30HMOV AH,2INT 21HDEC CHJNZ ROTLMOV DL,’H’MOV AH,2INT 21HMOV AH,4CHINT 21HCODE ENDSEND BEG进入汇编集成环境,输入、汇编、连接和运行此程序,观察结果。

2、将一个十六位二进制数转换成十进制数并显示输出。

<参考程序>DATA SEGMENTBUF0 DW 2768HBUF1 DB 5 DUP(0)BUF2 DW 10000,1000,100,10,1DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEG: MOV AX,DATAMOV DS,AXMOV AX,BUF0MOV BX,OFFSET BUF1MOV SI,OFFSET BUF2MOV CX,5L: MOV DX,0DIV WORD PTR[SI]ADD AL,30HMOV [BX],ALINC BXADD SI,2MOV AX,DXLOOP LMOV AH,9MOV DX,OFFSET BUF1INT 21HMOV AH,4CHINT 21HCODE ENDSEND BEG进入汇编集成环境,输入、汇编、连接和运行此程序,观察结果。

二、自动汇编,连接及转换的批处理文件:1、用EDIT或COPY CON ALK.BAT命令将下列程序输入:echo offmasm %1;echo if you donot link,strike Ctrl-Break for quit;and either:pauselink %1;del *.objecho if the file is .exe,pleas strike Ctrl-Break for quit。

and either:pauseexe2bin %1、exe %1、comdel %1、exe2、利用ALK.BAK文件汇编连接二个以前通过的源文件(COM型及EXE型)。

三、双字节乘法程序:<参考程序>disp macro messlea dx,messmov ah,9endmstack segment stackdb 256 dup(0)stack endsdata segmentbuf db 7db ?db 15 dup(?)messa db 'pleas input number A ! :$'messb db 0dh,0ah,'pleas input number B ! :$' linefd db 0dh,0ah,'$'bcd dd 1000000000,100000000,10000000dd 1000000,100000,10000,1000dd 100,10,1data endscode segmentassumecs: code,ds:data,ss:stackmain proc farpush dsxor bx,bxpush bxmov ax,datamov ds,axdisp messacall getpush bxdisp messbcall getdisp linefdpop axmul bxmov cx,10lea si,bcdlea di,buflop: call binecloop lopmov byte ptr[di],'$'disp bufretmain endpget proclea dx,bufmov ah,0ahlea si,buf+1xor bx,bxmov ah,bhmov cl,[si]next: inc siadd bx,bxmov dx,bxadd bx,bxadd bx,bxadd bx,dxmov al,[si]and al,0fhadd bx,axdec cljne nextretget endpbinec procmov bl,0again: sub ax,word ptr[si]sbb dx,word ptr[si+2]inc bljnc againadd ax,word ptr[si]adc dx,word ptr[si+2]add bl,2fhmov [di],blinc diadd si,4retbinec endpcode endsend main步骤:1、输入,汇编并连接此程序。

相关文档
最新文档