汇编语言中的寄存器间接寻址 MOV DX,4000H MOV DS,AX(这一步是把2000放入

汇编语言中的寄存器间接寻址
MOV DX,4000H
MOV DS,AX(这一步是把2000放入ds中,还是把2000当做ds的起始地址)
MOV SI,1000H
MOV AX,[SI]
操作数的地址为什么是DS*16+SI=21000H也就是说把2000设定为DS的起始地址么

呵呵 俺来帮你解答吧
微型计算机对每一个用户程序,在存储器的使用上,是分段使用的,用来存程序代码的区域叫代码段 用来存放用户数据的叫数据段;数据段的首地址(为5位十六进制数,将高4位地址存放在DS段寄存器中,最后1位地址默认为0) 因为DS段寄存器胃16位的寄存器(只能存储4位十六进制数) 所以 数据段的首地址=DS*16(乘16 相当于将DS段寄存器中存放的高4位地址的后面补1个0)。
用于在使用数据段存储数据时,采用有效地址(即偏移地址) 即指针 如以SI作数据指针
SI中装入的是操作数的偏移地址。
该操作数的真正的物理地址=DS*16+SI=20000H+1000H=21000H.
呵呵 你的源代码 有一处错误:
MOV DX,4000H ; 应该是MOV AX,4000H MOV DS,AX
MOV SI,1000HMOV AX,[SI]
呵呵 满意就选满意回答哦追问

那么请问一下段间转移中JMP FAR PTR ADD1 其中CS代码段里存放的是某一段的地址么?IP是这一段的偏移地址么

段存储器存放的都是地址嘛

能给我解释下DAA么,为什么要在>9的时候➕6调整

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-01-16
MOV DS,AX
(这一步是把给DS段寄存器赋初值为2000H,作为数据段段地址)

在使用寄存器SI作为间接寻址寄存器时,默认数据取自数据段,段地址取自DS,

所以,执行指令MOV AX,[SI]时,源操作数的逻辑地址为DS:SI,其物理地址则为DS*16+SI=211000H

汇编语言中 mov ds,ax 移动的是ax中的数据还是只是它的一个复制...
移动一个文件到其它地方,也是先复制过去,再把原文件删除。mov ds,ax 将ax中的数据赋值给ds,ax中的值不会消失。mov ax,data这句,如果是前面有assume ds:data的情况,是将地址值传给ax;若data是一个变量,如DATAS SEGMENTdata dw 12H;DATAS ENDS中的data,则是把data中的数据给ax。 本回答由提问者推荐 举报|...

本科汇编题目:已知(BX)=0BBH,(BP)=5000H,(SI)=4000H,(DI)=6000H,(DS...
3.寄存器间接寻址方式,目的操作数的物理地址:DS *16 + DI = 1000H *16 + 6000H = 1 6000H.4.基址加变址寻址方式,目的操作数的物理地址:SS *16 + BP + SI = 3000H *16 + 5000H + 4000H = 3 9000H 5.基址加变址寻址方式,目的操作数的物理地址:ES *16 + DI + SI = 2...

汇编语言中 [SI] 表示地址还是内容 ?
汇编语言中 [SI] 表示是地址,这是一种寄存器间接寻址 例如如果SI中内容为1234H,基地址为4000H(取数据时基地址在DS或者ES中保存,取代码时保存在CS中),则实际物理地址为基地址X10H+偏移地址=4000HX10H+1234H=41234H

寄存器寻址和寄存器间接寻址的区别
一、主体不同 1、寄存器寻址:是指操作数在寄存器中,由指令操作码中的rrr三位的值和PSW中RS1及RS0的状态,选中某个工作寄存器区的某个寄存器,然后进行相应的指令操作。2、寄存器间接寻址:将指定的寄存器内容为地址,由该地址所指定的单元内容作为操作数。二、功能不同 1、寄存器寻址:指令所要的操...

微机题,编制完成EAX*5\/8的程序段。要求:1.用乘法指令实现。2.用移位和...
3.2 试述指令MOV AX,2000H和MOV AX,DSz[2000H]的区别。解:前一条指令是立即寻址,即把立即数2000H传送至寄存器AX。后一条指令是直接寻址,是把数据(DS)段中的地址为200OH单元的内容传送至寄存器AX。3.3 写出以下指令中内存操作数的所在地址。(1)MOV AL, [BX 10](2)MOV [BP 10], AX(3)INC BYTE PTR...

汇编试题解答
MOV AX, [BX][SI] 物理地址 21001H (AX)=7812H 6.在下列程序段括号中,填入正确的答案。DATA SEGMENT BUF DB 12H,56H DATA ENDS 7.指出下列指令错误原因,填入括号中。A. MOV AX,BL ;源操作数与目标操作数长度不同 B. MOV CS,AX ;CS寄存器不能作为目标操作数 C. DEC GAMA[...

汇编语言 秒表程序设计
mov ax,0000 mov ds,ax ;数据段清零 mov ax,offset irq7 ;取中断程序入口地址 add ax,2000 ;加装时IP=2000地址 mov si,003c ;填8259中断7中断矢量 mov w[si],ax ;填偏移量矢量 mov ax,0000 ;段地址CS=0000H mov si,003e mov w[si],ax ;填段地址矢量 ...

谁能解释一下cpu寻址方式吗?
MOV AX,6677H 2. 直接寻址 直接寻址方式中操作数地址的16位偏移量(有效地址)直接存放在指令操作码之后,它和操作码一起存放在代码段中.默认情况下,基址存放在DS中.例如:mov ax,[4000h]mov ax,value (如果我们在前面定义了"符号地址"value=4000h,那么这句和上面的是一样的)3. 寄存器寻址 ★16...

怎么用汇编语言编程:在4000H~400FH中查找出字节为零的个数,并填入4010...
CLR A MOV R0,A MOVX @4010H,A mov dptr,#4000h MOV R1,#16 LOOP1:MOVX A,@DPTR JNZ LOOP2 INC R0 LOOP2:INC DPTR DJNZ R1,LOOP1 MOV A,R0 MOV DPTR,#4010H MOVX @DPTR,A

cpu编址方式
寻址方式一般有如下七种:1.立即寻址 立即(Immediate)寻址,就是在指令中使用的操作数是常数,这个常数就包含在指令中。以下几条指令都是立即寻址的例子:MOV AL,0 MOV AX,190 MOV EAX,-1 MOV EAX,0FFFFFFFFH 这些指令码中,都包含了立即数,如0,190,-1,0FFFFFFFFH。2.寄存器寻址 寄存器(...

相似回答