汇编实验3
任务一
描述:在数据段中依次存入 10H
,11H
,12H
,13H
,14H
,15H
,16H
,17H
,将其相加,并将结果存入DX
寄存器。
mov dx,0 ; DX清零
mov si,0200 ; 数据起始位置
mov cx,8 ; 循环次数
add dl,[si] ; 从内存取一个字节加到DL(低8位)
inc si ; SI指向下一个字节
loop 0109 ; 循环回到 add 指令处
int 3 ; 结束程序
e 0200 10 11 12 13 14 15 16 17
g
SI
:源索引寄存器(Source Index
)dl
是dx
的低位寄存器。int 3
相当于return 0
,告诉循环结束的位置。g
从当前的CS:IP
执行,也就是073F:0100
,正好是程序入口,一直执行直到int 3
程序的断点。- 与实验二 的
t
不同,t
是单步执行。
任务三
描述:3)在长度为 8
的字节数组(无符号数)中,查找大于 42H
的无符号数的个数,存放在字节单元 up
中;等于 42H
的无符号数的个数,存放在字节单元 equa
中;小于 42H
的无符号数的个数,存放在字节单元 down
中。程序显示 up
,equa
,down
的值。
八个数:31H,21H,42H,52H,87H,23H,98H,01H
-a 100
073F:0100 mov si,0200
073F:0103 mov cx,8
073F:0106 mov bl,42
073F:0108 mov al,0 ;大于
073F:010A mov ah,0 ;等于
073F:010C mov dl,0 ;小于
073F:010E mov bh,[si]
073F:0110 cmp bh,bl
073F:0112 ja 011A
073F:0114 je 011E
073F:0116 inc dl
073F:0118 jmp 0120
073F:011A inc al
073F:011C jmp 0120
073F:011E inc ah
073F:0120 inc si
073F:0121 loop 010E
073F:0123 mov [0210],al
073F:0126 mov [0211],ah
073F:0129 mov [0212],dl
073F:012E int 3
e 0200 31,21,42,52,87,23,98,01
g
d 210
-
debug
不接受标签 (next
等),所以只能自己计算地址。 -
r al
报错,所以要存在内存里面。- 它只接受
16
位寄存器名AX, BX, CX, DX, SP, BP, SI, DI, DS, ES, SS, CS, IP
。 - 使用
8
位寄存器节省空间。
- 它只接受