汇编实验3
任务一
描述:在数据段中依次存入 10H,11H,12H,13H,14H,15H,16H,17H,将其相加,并将结果存入DX寄存器。
debug
-a 100
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 ;156,009C
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
debug
-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位寄存器节省空间。
- 它只接受

浙公网安备 33010602011771号