当前位置:首页 >> 其它课程 >> 广工汇编语言实验

广工汇编语言实验


每个实验2学时,共8学时
实验要求:实验2、3、4是学生自己编写程序, 以演示并解释程序通过。(利用业余时间把程序编 好,上实验课时将已可执行的程序进行演示,并解释 编程思路.) 注:1. 实验2、3只要进行演示。 2. 实验4 为争优实验。

##汇编语言是在DOS操作系统下的编程语言。 实验2提示: (指导书有提示) * DOS显示功能调用(应

用)在课本第335页. * DOS系统功能调用(INT 21H) 表 ? 见附录4 ‥‥课本第471页 * ASCII码字符 表 ‥‥见实验指导书第191页 ?实验四提示: (指导书有提示) * DOS键盘功能调用(应用)在课本第320 - 323页. 采用0AH功能调用 或 也可采用01H功能调用 。

汇编语言程序结构
汇编程序的基本框架

1.完整段定义框架
STACK STACK SEGMENT ┇ ENDS ;定义堆栈段

DATA
DATA

SEGMENT ┇ ENDS

;定义数据段

CODE SEGMENT ASSUME

;定义代码段 CS:CODE,DS:DATA,SS:STACK ;说明代码段的段地址放在CS中 ;数据段的段地址放在DS中 ;堆栈段的段地址放在SS中 START:MOV AX,DATA MOV DS,AX ;数据段段地址送DS中 ┇ ┇ ;程序 MOV AX,4C00H ;程序结束返回DOS 或 RET INT 21H CODE ENDS ;代码段结束 END START

实验一
例1.1 比较字符串sample 试编写一程序:比较两个字符串string1和string2所含的字符是否 相同。若相同则显示‘Match’,否则,显示‘No match’。 我们可以用串比较指令来完成程序所要求的功能。上机过程如下: 1.用文本编辑程序Edit.com来建立源文件。建立asm文件。 使用文本文件方式建立以sample.asm为文件名的源文件如下程序 所示。 datarea segment ;定义数据段 string1 db ‘Move the cursor backward.’ string2 db ‘Move the cursor backward.’ ; messl db ‘Match.’,13,10,’$’ mess2 db ‘No match!’,13,10,’$’

prognam segment ;定义代码段 main proc far assume cs:prognam,ds:datarea,es:datarea start: ;程序开始执行起始标志 ;set up stack for return push ds ;存原数据段地址 sub ax,ax ;赋 0 值给AX寄存器 push ax ;保存到栈中 ;set DS register to current data segment mov ax,datarea ; datarea segment addr mov ds,ax ; into DS register mov es,ax ; into ES register ;MAIN PART OF PROGRAM GOES HERE lea si,string1 lea di,string2

cld mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short disp match: lea dx,mess1 disp: mov ah,09 int 21h ret main endp prognam ends end start

;DOS功能调用(INT 21H) ;回到DOS界面 ;主段结束 ;代码结束 ;汇编执行结束

2. 用汇编程序 masm 对源文件汇编产生目标文件 .obj C>masm sample.asm ↙↙ The IBM Personal Computer MACRO Assembler Version 1.00(C)Copyright IBM Corp 1981 Warning Severe Errors Errors 0 0 如汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。 3.用连接程序Link产生执行文件 .exe C>link sample ↙ IBM 5550 Multistation Linker 2 .00 (C)Copyright IBMCorp.1983

Warning:No STACK segment There was 1 error detected.
4. 执行 sample.EXE 文件 C>sample ↙ C> Match.

在生成执行文件后(.EXE),可用另一种调试程序的 方法是使用debug程序(内部命令)。可调用如下: C>debug sample.exe


此时,debug已将执行程序装入内存,可直接用g命令运 行程序。 –g Match. Program terminated normally

为调试程序的另一部分,可在debug中修改 字符串内容。可先用 u命令显示程序,以便了解 指令地址。

—u 19F3:0000 19F3:0001 19F3:0003 19F3:0004 19F3:0007 19F3:0009 19F3:000B 19F3;000F 19F3:0013 19F3:0014 19F3:0017 19F3:0018 19F2;0019 19F3:001B 19F3:001F

1E PUSH DS 2BC0 SUB AX,AX 50 PUSH AX B8EE19 MOV AX,19EE 8ED8 MOV DS,AX 8EC0 MOV ES,AX 8D360000 LEA SI,[0000] 8D3E1900 LEA DI,[0019] FC CLD B91900 MOV CX,0019 F3 REPZ A6 CMPSB 7406 JZ 0021 8D163B00 LEA DX,[003B] EB04 JMP 0025

—u 19F3:0021 19F3:0025 19F3:0027 19F3:0029
19F3:002A 19F3:002D 19F3:002E 19F3:002F 19F2:0031 19F3:0032 19F3:0036 19F3:0038

8D163200 B409 CD21 CB FF7501 40 5A 22C2 50 807EDC20 B0FF 7201

LEA DX,[0032] MOV AH,09 INT 21 RETF PUSH [DI+01] INC AX POP DX AND AL,DL PUSH AX CMP BYTEPTR [BP-24],20 MOV AL,FF JB 003B

运行以前将断点设置在程序的主要部分。 —g0b
AX=19EE BX=0000 CX=007A DX=0000 SP=FFFC BP=0000 SI=0000 DI=0000 DS=19EE ES=19EE SS=19EE CS=19F3 IP=000B NV UP DI PL ZR NA PE NC 19F3:000B 8D360000 LEA SI,[0000] DS:0000=6F4D

根据其中指示的ds寄存器内容查看数据段的情况如下:
—d0
19EE:0000 19EE:0010 19EE:0020 19EE:0030 19EE:0040 19EE:0050 19EE:0060 19EE:0070 4D 62 65 64 74 1E 3E 74 6F 61 20 2E 63 2B 19 8D 76 63 63 4D 68 c0 00 16 65 6B 75 61 21 50 FC 32 20 77 72 74 0D B8 B9 00 74 61 73 63 0A EE 19 B4 68 72 6F 68 24 19 00 09 65-20 64-2E 72-20 2E-0D 00-00 8E-D8 F3-A6 CD-21 63 4D 62 0A 00 8E 74 CB 75 6F 61 24 00 C0 06 FF 72 76 63 4E 00 8D 8D 75 73 65 6B 6F 00 36 16 01 6F 20 77 20 00 00 3B 40 72 74 61 6D 00 00 00 5A 20 68 72 61 00 8D EB 22 Move the Cursor backward.Move th e Cursor backwar d.Match.$No ma tch !.$..... .+@P8n.X.@.6. >.|9.S&t.;.k .2.4.M!K.U.@Z”

改变字符串后, 用g命令运行程序,结果为: —g↙ No match! Program terminated normally 用q命令退出debug。 —q↙

说明: mess1 db ‘Match.’, 13,10,$’ 或 0D,0A ↓ ↓ ↓
回车, 换行,字符串结束符

MOV INT

AH,09 21H

;显示字符串 (见P471)

详见附录4

DOS系统功能调用(INT 21H)

DOS命令解释: C:> 表示当前盘是C盘. D:↙ 表示转D盘. CD masm↙ 进入子目录(子目录名为masm). CD\↙ 返回根目录. CD.. ↙ 返回上一层子目录. DIR ↙ 显示当前目录下的内容. (本书的P82—90)
? ? ? ?

先进到C盘或F盘 MASM子目录里。 用该子目录里的 EDIT.COM 来建立源程序。××.asm。 用该子目录里的 MASM.EXE 来汇编产生目标文件 .obj。 用该子目录里的 LINK.EXE 来产生可执行文件 .exe。

datarea segment ;define data segment stringl db ‘Move the cursor backward.’ string2 db ‘Move the cursor backward.’ messl db ‘Match.’,13,10,’$’ mess2 db ‘No match!’,13,10,’$’ datarea ends prognam segment ;define code segment main proc far assume cs:prognam,ds:datarea,es:datarea start: ;starting execution address push ds ;save old data segment sub ax,ax ;put zero in AX push ax ;save it on stack mov ax,datarea ; datarea segment addr mov ds,ax ; into DS register mov es,ax ; into ES register lea si,string1 lea di,string2 cld mov cx,25 repz cmpsb jz match lea dx,mess2 jmp short disp match: lea dx,mess1 disp: mov ah,09 int 21h ret ;return to DOS main endp ;end of main part Of program prognam ends ;end of code segment end start

此数据段的段地址是由机器汇编产生的。 本机产生的段地址为:19EE。

段地址:偏移地址 机器码

一u 19F3:0000 19F3:0001 19F3:0003 19F3:0004 19F3:0007 19F3:0009 19F3:000B 19F3;000F 19F3:0013 19F3:0014 19F3:0017 19F3:0018 19F2;0019 19F3:001B 19F3:001F 一u 19F3:0021 19F3:0025 19F3:0027 19F3:0029

1E PUSH DS 2BC0 SUB AX,AX 50 PUSH AX B8EE19 MOV AX,19EE 8ED8 MOV DS,AX 8EC0 MOV ES,AX 8D360000 LEA SI,[0000] 8D3E1900 LEA DI,[0019] FC CLD B91900 MOV CX,0019 F3 REPZ A6 CMPSB 7406 JZ 0021 8D163B00 LEA DX,[003B] EB04 JMP 0025 8D163200 B409 CD21 CB LEA DX,[0032] MOV AH,09 INT 21 RETF


更多相关文档:

广工汇编语言实验报告

广工汇编语言实验报告_表格类模板_表格/模板_实用文档 暂无评价|0人阅读|0次下载|举报文档广工汇编语言实验报告_表格类模板_表格/模板_实用文档。计算机学院___...

广工汇编语言实验报告2013

汇编语言实验报告 1、 用表格形式显示字符 2、 字母大小写转换 3 、 课程设计 1(争优) 学生学院: 专业班级: 学号: 计算机 11 计科 6 班 3111005916 陈国洪...

广工汇编语言程序设计实验报告

广工2012编译原理实验报告 13页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 广工汇编语言程序设计实验报告 隐藏>>...

基础汇编语言程序设计实验(广工版)

计算机 学院 计算机科学与技术专业 10(4) 班组、学号: 姓名 实验题目 协作者 教师评定 基础汇编语言程序设计实验 一、实验目的: 1、学习和了解 TEC-XP+教学实验...

汇编语言实验

实验步骤 (1)进入 DEBUG↙ (2)分别调试上面程序段 (3)记录每一段程序查看结果的方法和具体结果 四、 (1)分析上面程序段实现的功能 实验汇编语言程序设计...

广工计算机组成原理实验报告

广工计算机组成原理实验报告_教育学_高等教育_教育专区。实验题目 实验一 基础汇编语言程序设计 一、实验目的: (1)学习和了解TEC-XP+教学实验系统监控命令的用法。...

广工微机实验一

广工微机实验一_计算机软件及应用_IT/计算机_专业资料。课程论文 课程名称 微机原理及应用实验 题目名称__ 汇编语言上机操作___ 学生学院_ 专业班级_) 学号 ___...

汇编语言实验报告

汇编语言实验报告_工学_高等教育_教育专区。合肥工业大学 计算机与信息学院 实验报告课 程:汇编语言程序设计 专业班级: 学姓号: 名: 实验一一. 实验目的 Debug ...

广工计算机组成原理实验报告

广工计算机组成原理实验报告_计算机硬件及网络_IT/计算机_专业资料。计算机组成原理...目录实验一:基础汇编语言程序设计实验...错误!未定义书签。 1 实验目的......

汇编语言实验5

汇编语言实验5_计算机软件及应用_IT/计算机_专业资料。汇编语言实验5 计算机科学系实验报告(首页)一、实验目的:掌握具有代码段、数据段、堆栈段等多个段程序的编写...
更多相关标签:
汇编语言实验7 | 汇编语言实验报告 | 汇编语言程序设计实验 | 汇编语言实验 | 汇编语言实验10 | 汇编语言实验答案 | 汇编语言上机实验 | 汇编语言上机实验报告 |
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com