图里的这道汇编的题里,BLOCK3的偏移地址及其对应各字节单元的内容是什么?回答好我再给50分!

作者&投稿:闾味 (若有异议请与网页底部的电邮联系)
有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中以BLOCK为首地址的存储区域中存...~

data segment
block db 16 dup(?)
average db 0
data ends

code segment
start: mov ax,data
mov ds,ax
xor ax,ax
lea si,block
mov cx,16
_Add: mov bl,[si]
add al,bl
adc ah,0
inc si
loop _Add
div ax,16
mov average,al

mov ax,4c00h
int 21h
code ends
end start

  三条语句都是MOV传送指令,都是内存与寄存器之间数的传送。EAX,ECX,EBX都是32位的通用寄存器,BX,SI,DI都是16位的寄存器。

  三条语句的作用如下:
  (1)MOV [SI],EAX
  本句的作用是把EAX寄存器中的数据9823F456H存入首地址为[SI]的内存中。[SI]指的是一个内存单元(偏移地址存储于SI寄存器中,段基址默认存储在DS中,因此[SI]表示的是DS:[SI]即DS:2000H内存单元)
  由于一个内存单元只能存储2位16进制数,因此用4个内存单元存储9823F456H,数据低位存入低位地址内存,数据高位存入高位地址内存,从内存单元DS:2000H开始存储,因此4个内存单元地址从低到高分别为56H,0F4H,23H和98H。
  (2) MOV [BX],ECX
  本句语法与(1)一致,因此不作解释,作用类似于(1)。作用是把ECX寄存器中的数据1F23491H存入首地址为[BX]的内存中。
  (3) MOV EBX,[DI]
  本句的作用是把[DI]内存单元中的数据也就是起始单元为DS:[4044H]的4个字节单元中的数据92H,6DH,0A2H和4CH按照低位到高位(最低位数据为92H,最高位数据为4CH)存入EBX寄存器中(32位寄存器EBX可以存储8位十六进制数据)。

  关于问题:mov [ ],EAX等左边加方括号是什么操作?
  [ ]表示的是一个内存单元,[ ]内部为一个内存单元的偏移地址。
  方括号内如果是一个寄存器如[BX],那么表示寄存器BX内存储着内存单元的偏移地址;如果方括号内是一个数值,如[25H],则表示此内存单元的偏移地址为25H。一般默认内存单元的段基址是存储在DS段寄存器中的。

循环值CX给定的很清楚,CL=4,CH=0
BLOCK3的偏移地址对应各字节单元的内容是: 61H 69H 20H 40H

实验报告如下:

C:\>DEBUG
-a

0AFB:0100 MOV CX,0004

0AFB:0103 CLC

0AFB:0104 MOV AL,[SI]

0AFB:0106 INC SI

0AFB:0107 ADC AL,[DI]

0AFB:0109 INC DI

0AFB:010A DAA

0AFB:010B MOV [BX],AL

0AFB:010D INC BX

0AFB:010E LOOP 0104

0AFB:0110 INT 20

0AFB:0112

-rsi

SI 0000
:200

-

-rdi

DI 0000
:210

-

-rbx

BX 0000
:220

-

-e200

0AFB:0200 0A.96 FC.74 80.32 74.10

-

-e210

0AFB:0210 0A.65 74.94 20.87 80.29

-

-d200 l30

0AFB:0200 96 74 32 10 20 FC FC 01-00 22 3A 74 75 05 80 3C .t2. ....":tu..<
0AFB:0210 65 94 87 29 3C 74 75 14-0A F9 01 80 0F 8A 07 AA e..)<tu.........
0AFB:0220 14 D0 01 55 C4 8A 07 3C-20 74 01 AA 43 E2 BC C3 ...U...< t..C...
-

-g

Program terminated normally
-

-d200 l30

0AFB:0200 96 74 32 10 20 FC FC 01-00 22 3A 74 75 05 80 3C .t2. ....":tu..<
0AFB:0210 65 94 87 29 3C 74 75 14-0A F9 01 80 0F 8A 07 AA e..)<tu.........
0AFB:0220 61 69 20 40 C4 8A 07 3C-20 74 01 AA 43 E2 BC C3 ai @...< t..C...
-

-q

MOV CL, ...
MOV CH, 0
上面两句,就是给CX送进去数值。


一道汇编语言题跪求解答,困扰好几天了
你的问题回答:1、lea 和 mov 都可以取变量的偏移地址,只是mov语句需要加 offset 前缀;2、图片程序确实啰唆,完全可以直接 “mov ax, x” 将8100h 传送给 ax 。程序中的问题:很显然,x、y 两个数都是负数,直接相加产生溢出;如果当无符号数计算,也会溢出,所以这样的运算,在相加之前,就应...

单片机汇编高手进 ,这道题怎么算 求详细过程?
采纳率:60% 来自:芝麻团 擅长: 系统软件 汇编语言 家电 生活常识 其他社会话题 其他回答 PC=0345HSP保存的是ACALL指令之后的下一条指令的地址,ACALL指令占了2字节,所以ACALL SUBTRN之后指令的地址是0125H,则61H=25H,62H=01H。 ATF144X | 发布于2013-02-28 举报| 评论 11 0 ACALL指令占了2字节...

有朋友会这道编程题吗,用汇编语言啊。。跪求答案啊。。。设在数据段中...
data segment block db 16 dup(?)average db 0 data ends code segment start: mov ax,data mov ds,ax xor ax,ax lea si,block mov cx,16 _Add: mov bl,[si]add al,bl adc ah,0 inc si loop _Add div ax,16 mov average,al mov ax,4c00h int 21h code ends e...

汇编语言中的问题
buf可以理解为存储器内存的某个单元的符号地址,即用符号代表这个地址。在本题中,buf是存储数据3的内存单元的地址。而L是存放数据0的单元的地址ABUF和BUF两个地址的差,值应该是6。计算过程为:设BUF代表的地址值为0(其中存放数据3),那么其后4,5,‘123’,0分别占有地址1,2,3,4,5,6,;...

汇编语言题
AL=(0)、CF=(0)codesegmentassume cs:codeorg 100hstart:push cspop dspush cspop esmov al,ahnot aladd al,ahinc aljc @1mov dl,'0'mov ah,2int 21hjmp @exit@1:mov dl,'1'mov ah,2int 21h@exit:mov ah,4chint 21hcodeendsend start; 结果输出为0,即进位标志并未置1《其实,...

一道简单汇编语言的问题
我是来支持楼上的,是1300H。解释一下SHL AX CL SHL(Shift Logic Left)逻辑左移指令 在带AX,CL操作数的情况下,是将AX左移CL位,右边补0,左边溢出位进入标志位C(标志寄存器的变化我不太清楚了,如有必要可以写个例程试一下)这道题CL=4,二进制左移四位正好是十六进制左移一位,右边补0,...

关于汇编里数据(补码)的存储问题!
在计算机内部,是用二进制数的形式,存储各种数据。这些二进制数,可以代表:数字、字符、声音、图像、动作、状态。。。到底是什么信息数据?这要取决于软件,对它们的处理方法。比如:F6H,既可以是 246,也可能是代表-10。F6H,到底是什么? 你看看你软件吧。F6 + F6,用二进制相加,如下:1111 ...

汇编小题
这几个小题,每小题一种寻址方式,涉及了Intel CPU所有的7种寻址方式。因为题目只给出两个寄存器的值和一个内存地址,却没有给出对应存储单元所存储的值。所以,除第2小题外,其它6个小题,我只能回答有效地址EA的值,无法得知寄存器DX的值。此题条件不足。1. mov dx,[1234h]EA=1234h 直接...

有木有汇编语言大神解一下这几道题啊???
7题:ax=2300h, si=1316h8题:ax=0107h, bx=175fh, cf=19题:al=24h, bl=06h10题:无法执行,因为题目中 data 数据定义错误,0GH、0LH、0MH 、0IH 均为错误数据格式。

几道简单的汇编语言题求答案!回答的好的话,我追加高的分数
低4位清0,结果存回原处 ORL 20H,#0F0H ANL 20H,#0F0H 10.将DPTR的中间8位取反,其余位不变,结果存回原处A (此题我理解为:将DPTR中的16位数的中间8位取反,其余位不变,结果存回原处,即dptr中)MOV A,DPH XRL A,#0FH MOV DPH,A MOV A,DPL XRL A,#0F0H MOV DPL,A ...

天津市19320512765: 图里的这道汇编的题里,BLOCK3的偏移地址及其对应各字节单元的内容是什么?回答好我再给50分!
函柳大活: 循环值CX给定的很清楚,CL=4,CH=0 BLOCK3的偏移地址对应各字节单元的内容是: 61H 69H 20H 40H 实验报告如下: C:\&gt;DEBUG -a 0AFB:0100 MOV CX,0004 0AFB:0103 CLC 0AFB:0104 MOV AL,[SI] 0AFB:0106 INC SI 0AFB:0107 ...

天津市19320512765: 汇编寻址方式问题
函柳大活: |12|34|56|78|9A|BC| 第6个字就是存BC的字,相对基址偏移为5*2=10 (1) mov bx, offset BLOCK + 10 mov dx, [bx] (2) mov bx, offset BLOCK mov dx, [bx+10] (3) mov bx, offset BLOCK mov si, 10 mov dx, [bx+si]

天津市19320512765: 我有三个问题,关于单片机程序的,第一个,采用循环结构,试编制能延时50ms的子程序,第二个,如下, -
函柳大活: 1、循环子程序,延时50ms.DEL: MOV R7,#100 LP: MOV R6,#248 DJNZ R6,$ DJNZ R7,LP RET 2、把累加器A中的二进制数转变成3位BCD码,并将百十个位数分别存放在内部RAM的50H,51H,52H单元中.MOV B,#64H DIV AB MOV 50H,A MOV A,B MOV B,#0AH DIV AB MOV 51H,A MOV 52H,B3、在内部RAM中,有一个以BLOCK为起始地址的数据块,块放在LEN单元中,请用查表指令编写程序,先检查它们是否是十六进制数中的A~F,若是,则把它们变为ASCII码,若不是,则把他们变为00H.这道题要写一会儿.

天津市19320512765: 防御类型优先级问题1能量护盾2BLOCK3闪躲(1 - 敌人击中你的
函柳大活: 对物理伤害时,首先作用的是防御值,然后是格挡,然后是减少物理伤害和减少物理伤害%,以及骨盾的吸收,由于能量护盾不是所有的物理伤害都吸收所有不在物理伤害中说明. 物理伤害公式: 受到的实际伤害=(原伤害-减少伤害)*(1-减少伤害%)-骨甲吸收值 法术伤害公式: 受到的实际伤害=(原伤害-减少法术伤害)*(1-抗性%)*(1-能量护盾%)*(1-吸收%)-飓风装甲吸收值-吸收 防御力,格挡,闪躲这三个因素都是避免造成伤害的,所以不能算在公式中,所以不能做具体的对比. 但格档很重要这是肯定的.

天津市19320512765: 一道汇编语言基础题,请高手帮忙
函柳大活: 参考程序如下: 调试程序,执行到最后add bh,x1并回答: 1)x1的段地址0B59 2)x1 的偏移地址0000 3)x2的段地址0B59 4)x2 的偏移地址0010 5)(x1 1)=34 (x2 1)=78 (x2 2)=0C,(x3 1)=00,(x3 2)=0D 6) (ds)=0B59 (cs)=0B5A 7) AX=0B59 BX=1800 ...

天津市19320512765: JAVA 从键盘输入三个正数,判断这三个数能否构成三角形的三条边长; -
函柳大活: 三角形判断:package pack_triangle; import java.io.*; public class Triangle {public static void main(String[] args)throws IOException { double a,b,c; BufferedReader in1=new BufferedReader(new InputStreamReader(System.in)); BufferedReader in...

天津市19320512765: C语言每个句子的每一个单词 倒置 -
函柳大活: 给出一个句子,把每一个字母倒置,但不改变单词的顺序.输入:这个题有多个CASE.第一行给出一个正整数N(N<500),然后紧接着一个空行,再紧接着N个数据块,.每一个数据块,包括一个正整数T与T行英语句子.句子总长不超过300....

天津市19320512765: c语言中switch - case的问题 -
函柳大活: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class test16 { public static void main(String[] args) {System.out.println("输入你的得分"); BufferedReader br=new BufferedReader(new ...

天津市19320512765: c语言printf函数的问题 -
函柳大活: 这个问题开始我也觉得很奇怪,现在终于明白了,估计是这样的 printf是从右到左的输出顺序,并且是最终一次性输出,即:printf("%d,%d,%d,%d\n",a=b=c,a=(b==c),a==(b=c),a==(b==c)); 先判断a==(b==c) ,b不等于c a不等于0 所以判断结果...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网