《作业回答1doc.docx》由会员分享,可在线阅读,更多相关《作业回答1doc.docx(3页珍藏版)》请在三一办公上搜索。
1、作业回答1doc1.6 在80x86中,逻辑地址由哪两部分组成?每个段与段寄存器之间有何对应的要求? 答: 20位物理地址由16位段地址和16位偏移地址组成,物理地址的计算方法可以表示如下:16d段地址+偏移地址=物理地址 代码段的段地址放在CS中,数据段的段地址放在DS中,堆栈段的段地址放在SS中,附加段的段地址放在ES中。 2.1 分别指出下列指令中源操作数和目的操作数的寻址方式。 (1) mov si, 10 源操作数为立即寻址,目的操作数为寄存器寻址。 (2) mov di, eax 源操作数为寄存器寻址,目的操作数为寄存器间接寻址。 (3) add eax, 4bx 源操作数为基址加
2、变址寻址,目的操作数为寄存器寻址。 (4) sub dx, 5bx di 操作数为基址加变址寻址,目的操作数为寄存器寻址。 (5) mov edi * 4 2, ax 源操作数为寄存器寻址,目的操作数为寄存器间接寻址。 (6) mov bh, ds: 10 操作数为变址寄存器加位移量寻址,目的操作数为寄存器寻址。 (7) mov si, si 源操作数为立即寻址,目的操作数为寄存器寻址。 (8) add cx, -7bp di 源操作数为基址加变址寻址,目的操作数为寄存器寻址。 2.4 试修改下列程序中的代码段,改用变址寻址方式访问buf1、buf2、buf3、buf4四个存储区中的存储单元
3、答: .386 stack segment stack db 200 dup(0) stack ends data segment buf1 db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 buf2 db 10 dup(0) buf3 db 10 dup(0) buf4 db 10 dup(0) data ends code segment assume : code, ds: data, ss: stack start: mov ax, data mov ds, ax mov si, offset buf1 mov di, offset buf2 mov bx, offset
4、 buf3 mov bp, offset buf4 mov cx, 10 lopa: mov al, si mov di, al inc al mov bx, al add al, 3 mov ds: bp, al inc si inc di inc bp inc bx dec cx jnz lopa mov ah, 4ch int 21h code ends end start buf1里依次放的是0,1,2,3,4,5,6,7,8,9 buf2里依次放的是0,1,2,3,4,5,6,7,8,9 buf3里依次放的是1,2,3,4,5,6,7,8,9,10 buf4里依次放的是4,5,6,7,8,9,10,11,12,13