汇编语言 为什么不能用立即数给段地址赋值 用通过寄存器间接赋值呢(应该有特殊的原因,是为什么呢) 你问的这个问题,反正书上也没有说,我也不太肯定。只是猜想,猜想而已。反正立即数就不能给地址赋值,这个是肯定的。原因:我感觉和寄存器的结构有关吧,在我用汇编的1年,我感觉段寄存一般都是配合偏移地址使用的,要么就是保存地址,间接的寻址的。保存立即数会完全的污染段寄存器的,我个人感觉,因为那样设计也不好,要是乱给段寄存器赋值,比如:cs,ds,bp,sp,那岂不是CPU大乱啦。一般都是保存地址的。
汇编语言中操作一个表,如table表,应该用什么段寄存器来操作 处理器中没有专用的表,需要程序猿来组织。一般用DS,也可以用其他段寄存器!
汇编语言的问题,课本上说操作数可以是立即数寄存器等等以及上述形式的加减表达式,有没有人详细说一下加 51单片机的指令的第一操作数,一般是寄存器第二操作数范围就较宽,可以是数据(立即数),可以是寄存器,可以是地址,可以是含地址的单元等MOV A,#50HMOV A,R2MOV A,50HMOV A,@R0
汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数 data segmentdata endsstack segmentdb 256 dup?stack endscode segmentassume cs:code,ds:data,ss:stackstart:mov ax,datamov ds,axmov ax,stackmov ss,axmov al,0c5hcall disp_almov al,065hcall disp_almov ah,04chint 21hdisp_al子程序将寄存器AL中的数值以十六进制显示出来disp_al:mov dh,almov bx,2;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次mov cl,4;首先显示高4位,在下次循环进再显示低4位shr al,clagain:and al,0fhcmp al,9ja hexadd al,'0';如果小于9,加上字符'0'将数字转换字符jmp disphex:sub al,10;如果大于9,先减去10,再加上字符'A',就可以将数字转换成相应的'A'~'F'add al,'A'disp:;利用中断显示字符mov dl,almov ah,02hint 21hmov al,dhdec bxtest bx,bxjnz againretcode endsend start
如何在汇编语言中输出寄存器中的数 _seg segment;define the extend segmentaddend dw-5962;define addende_seg endsc_seg segment;define the code segmentassume cs:c_seg,ds:d_seg,es:e_seg;match the segments and the registersstart:;the process start heremov ax,ds:augend;put augend into axadd ax,es:addend;add addend to ax and put the result into axlea bx,summov[bx],axc_seg endsend start;the end作业的要求是把augend+addend的值放在