实验一 汇编指令和机器代码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

一.实验目的

本实验共四个程序,均在debug下编写。程序一查看当前目录下的文件,程序二用ASCII码显示程序文件,程序三显示字符串,程序四键入任意字符串并显示出来。

二.实验内容

程序①

在命令行中打开debug程序,输入如下代码

-a100 #汇编命令A100表示汇编程序从100地址开始

0AE9:0100 mov dl,1 #将数值01h 装入DL 寄存器

0AE9:0102 mov ah,2 #将数值02h 装入AH 寄存器

0AE9:0104 int 21 #调用DOS 21号中断2号功能,用来逐个显示装入DL的字符0AE9:0106 int 20 #调用DOS 20号中断,终止程序,将控制权交回给DEBUG 0AE9:0108

-g

Program terminated normally

-u100 106

0AE9:0100 B201 mov dl,01

0AE9:0102 B402 mov dl,02

0AE9:0104 CD21 int 21

0AE9:0106 CD20 int 20

-r #R命令来查看、改变寄存器内容

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000 DS=0AE9 ES=0AE9 SS=0AE9 CS=0AE9 IP=0100 NV UP EI PL NZ NA PO NC

0AE9:0100 B201 MOV DL,01

-n #debug程序长度

-rbx

BX 0000 #存放长度值高位部分

:

-rcx

CX 0000 #存放长度值低位部分

:8 #程序的字节数

-w #将该程序写入磁盘中

Writing 00008 bytes

-q #退出debug

D:\>dir

D:\>smile

D:\>

运行程序

结果分析:程序打印出了asci码值为1的中的笑脸符号,查看了寄存器的值以及当前目录下的文件。

程序②

在命令行中打开debug程序,输入如下代码

-a100 #汇编命令

0AE9:0100 mov cx,0100 #定义循环次数为100H次, 即256次

0AE9:0103 mov dl,00 #dl寄存器中存入00值

0AE9:0105 mov ah,02 #ah寄存器中存入02值

0AE9:0107 int 21 #调用int21DOS功能函数

0AE9:0109 inc dl #dl寄存器的数值加1

0AE9:010B loop 0105 #每执行一次,cx减1,跳转到105地址,循环执行命令,直到

CX=0

0AE9:010D int 20 #程序结束, 调用中断

0AE9:010F

-g #显示ASCII码

运行程序

结果分析:程序循环打印出了从ASCII码0到255对应的字符.

程序③

在命令行中打开debug程序,输入如下代码

-a100 #汇编命令

0AE9:0100 mov dx,109 #dx寄存器存入将要打印的字符串的起始地址值

0AE9:0103 mov ah,9 #ah寄存器存入int21功能函数号

0AE9:0105 int 21 #调用DOS 21号中断2号功能,用来逐个显示装入DL的字符0AE9:0107 int 20 #调用DOS 20号中断,终止程序,将控制权交回给DEBUG 0AE9:0109 db 'understand?$' #使用db命令定义字符串

0AE9:0115

-r bx

BX 0000 #存放长度值高位部分

:

-r cx

CX 0000 #存放长度值低位部分

:15 #程序的字节数

-n

-w #将该程序写入磁盘中

Writing 00015 bytes

-g

understand?

Program terminated normally

-d100 #显示字符串

运行程序

结果分析:程序打印出起始地址为100单元的字符串

程序④

在命令行中打开debug程序,输入如下代码

-a100

0AE9:0100 mov dx,0116 #定义内存0116单元的值为字符缓冲区地址的最大的长度

0AE9:0103 mov ah,0a #ah寄存器存入int 21的功能函数0a

0AE9:0105 int 21 #输入缓冲区

0AE9:0107 mov dl,0a #dl寄存器存入0a值

0AE9:0109 mov ah,02 #ah存入功能函数02

0AE9:010B int 21 #调用int21功能函数

0AE9:010D mov dx,0118 #将字符串的起始地址0118存入寄存器dx

0AE9:0110 mov ah,09 #ah寄存器存入函数功能号

0AE9:0112 int 21 #调用DOS 21号中断2号功能,用来逐个显示装入DL的字符0AE9:0114 int 20 #调用DOS 20号中断,终止程序,将控制权交回给DEBUG 0AE9:0116 db 20 #0116单元存入字符串缓冲区的长度值,即定义缓冲区

0AE9:0117

-g

abcd$

abcd

Program terminated normally

-g

how are you?$

相关文档
最新文档