汇编语言测试

汇编语言测试,第1张

read and replace

data segment

  s   db 80

    db 0

db 80 dup(0), '$'

  inmsg db 'Input string (<80):$'

  crlf db 0dh, 0ah, '$'

data ends

assume cs:code, ds:data

code segment

start:

mov ax, data

mov ds, ax

    show inmsg

mov  ah,9

lea dx, inmsg

int 21h

read 

mov ah,0ah

lea dx, s

int 21h

mov ch,0

mov cl, s[1] the string size

mov si, 0

L0:

cmp si, cx

jz print

mov al, s[2+si]

    cmp al, '0'

jl  n0

cmp al,'9'

ja  n0

mov ah, s[2+si+1]

cmp ah,'A'

jl  n0

    cmp ah, 'F'

ja n1

add si,2 ok, skip 2 chars

jmp L0

n1:

cmp ah,'a'

jl n0

cmp ah,'f'

ja n0

add si,2ok too, skip 2 chars

jmp L0

n0:

mov s[2+si], '*'

inc si

jmp L0

print:

                mov s[2+si],'$'

     lea dx, crlf

mov ah,9

int 21h

lea dx, s[2]

mov ah,9

int 21h

lea dx, crlf

int 21h

mov ah,4ch

int 21h

code ends

end start

启动

Debug,它是可用于测试和调试

MS-DOS

可执行文件的程序。

Debug

[[drive:][path]

filename

[parameters]]

参数

[drive:][path]

filename

指定要测试的可执行文件的位置和名称。

parameters

指定要测试的可执行文件所需要的任何命令行信息。

++

说明

使用

Debug

命令但不指定要测试的文件

如果使用没有位置和文件名的

Debug

命令,然后键入所有的

Debug

命令以响应

Debug

提示符,连字符

(-)。

Debug

命令

以下是

Debug

命令列表:

?

显示

Debug

命令列表。

a

汇编

8086/8087/8088

记忆码。

c

比较内存的两个部分。

d

显示部分内存的内容。

e

从指定地址开始,将数据输入到内存。

f

使用指定值填充一段内存。

g

运行在内存中的可执行文件。

h

执行十六进制运算。

i

显示来自特定端口的

1

字节值。

l

将文件或磁盘扇区内容加载到内存。

m

复制内存块中的内容

/n

l

w

命令指定文件,或者指定正在测试的文件的参数。

o

向输出端口发送

1

个字节的值。

p

执行循环、重复的字符串指令、软件中断或子例程。

q

停止

Debug

会话。

r

显示或改变一个或多个寄存器。

s

在部分内存中搜索一个或多个字节值的模式。

t

执行一条指令,然后显示所有寄存器的内容、所有标志的状态和

Debug

下一步要执行的指令的解码形式。

u

反汇编字节并显示相应的原语句。

w

将被测试文件写入磁盘。

xa

分配扩展内存。

xd

释放扩展内存。

xm

映射扩展内存页。

xs

显示扩展内存的状态。

分隔命令参数

所有

Debug

命令都接受参数,除了

q

命令之外。可以用逗号或空格分隔参数,但是只有在两个十六进制值之间才需要这些分隔符。因此,以下命令等价:

dcs:100

110

d

cs:100

110

d,cs:100,110

指定有效地址项

Debug

命令中的

address

参数指定内存位置。Address

是一个包含字母段记录的二位名称或一个四位字段地址加上一个偏移量。可以忽略段寄存器或段地址。a,g,l,t,u

w

命令的默认段是

CS。所有其他命令的默认段是

DS。所有数值均为十六进制格式。

有效地址如下:

CS:0100

04BA:0100

在段名和偏移量之间要有冒号。

指定有效范围项

Debug

命令中的

range

参数指定了内存的范围。可以为

range

选择两种格式:起始地址和结束地址,或者起始地址和长度范围(由

l

表示)。

例如,下面的两个语法都可以指定从

CS:100

开始的

16

字节范围:

cs:100

10f

cs:100

l

10

++

Debug

子命令

选择

Debug

命令以获得详细信息。

Debug:A(汇编)

Debug:C(比较)

Debug(转储)

Debug:E(键入)

Debug:F(填充)

Debug:G(转向)

Debug:H(十六进制)

Debug:I(输入)

Debug:L(加载)

Debug:M(移动)

Debug:N(名称)

Debug:O(输出)

Debug:P(执行)

Debug:Q(退出)

Debug:r(寄存器)

Debug:s(搜索)

Debug:T(跟踪)

Debug:U(反汇编)

Debug:W(写入)

Debug:XA(分配扩展内存)

Debug:XD(取消分配扩展内存)

Debug:XM(映射扩展内存页)

Debug:XS(显示扩展内存状态)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11295622.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存