文档详情

汇编_第2章(Ok).ppt

发布:2017-05-08约9.28千字共57页下载文档
文本预览下载声明
例2: 设 BUF1 DB 10,20,25,37,50 即以BUF1为首址的字节区中存放有5个数据,将它们拷贝到以BUF2为首址的字节区。 2.3 变址寻址 (9) 0000H 0004H 0003H 0002H 0AH 14H 19H 25H 32H 0001H 与数组类比:A[0], A[1], A[2],… B[0], B[1], B[2] BX 0000 BUF1[BX] I A[I] BUF2[BX] BUF1 BUF2 例2:以BUF1为首址的字节区中存放有5个数据,将它们拷贝到以BUF2为首址的字节区。 2.3 变址寻址 (10) for (i=0;i5;i++) BUF2[i] = BUF1[i]; MAINP: EXIT: MOV BX, 0 CMP BX,5 JGE EXIT MOV AL, BUF1[BX] MOV BUF2[BX], AL INC BX JMP MAINP 用变址寻址实现的程序段 例2:以BUF1为首址的字节区中存放有5个数据,将它们拷贝到以BUF2为首址的字节区。 2.3 变址寻址 (11) MOV AL, [SI] MOV [DI], AL INC SI INC DI DEC CX JNZ MAINP MAINP: EXIT: 用寄存器间接寻址的程序段 MOV SI, OFFSET BUF1 MOV DI, OFFSET BUF2 MOV CX, 5 例3:以BUF1为首址的双字区中存放有5个数据,将它们拷贝到以BUF2为首址的字节区。 2.3 变址寻址 (12) for (int i=0;i5;i++) BUF2[i] = BUF1[i]; MAINP: EXIT: MOV EBX, 0 CMP EBX,5 JGE EXIT MOV EAX, BUF1[EBX*4] MOV BUF2[EBX*4], EAX INC EBX JMP MAINP 2.3 变址寻址 (13) .386 data segment use16 x db 10H, 20H, 30H x2 db 11H, 22H data ends stack segment use16 stack y db 40H, 50H db 200 dup(0) stack ends code segment use16 assume cs:code,ds:data,ss:stack z db 60H,70H,80H Begin :…. mov BX, 0 mov ah, x[BX] mov al, y[BX] mov cl, z[BX] C2_035j1.asm 操作数的段属性 汇编后的结果: MOV ah, [BX] MOV al, SS:[BX] MOV cl, CS:[BX] 当V中存在变量或标号时,系统默认操作数在该变量或标号所在的段中,除非显式指出了操作数的段。 2.3 变址寻址 (14) data segment x db 10H, 20H, 30H x2 db 11H, 22H data ends stack segment stack y db 40H,50H db 200 dup(0) stack ends code segment assume cs:code,ds:data,ss:stack z db 60H,70H,80H,0A0H,0,0B0H Begin :…. mov BX, 1 mov ah, x[BX] mov al, y[BX] mov cl, z[BX] 访问的数据各在什么段? MOV SI, SS:x[BX] MOV DH, x2[BX] MOV AX, CS:x2[BX] 结果是什么? 操作数的段属性 2.3 变址寻址(15) Data segment x DB 10H, 20H, 30H y DW 1122H, 3344H Data ends Code segment assume cs:code, ds:data Begin :…… MOV BX, 0 MOV x[BX], 0 MOV y[BX
显示全部
相似文档