我们将使用两个描述性的符号reg来表示一个寄存器,用sreg表示一个段寄存器.
在8086CPU中只有bx、si、di和bp这4个寄存器可以用在“[…]”中来进行内存单元的寻址
在“[…]”中,这4个寄存器可以单個出现,或只能以4种组合出现:bx和si、bx和di、bp和si、bp和di
只要在“[…]”中使用寄存器bp,而指令中没有显式地给出段地址,则段地址就默认在cs中.
指令要处理的數据有多长
在没有寄存器名存在的情况下,用操作符X ptr指明内存单元的长度,X在汇编指令中可以为word或byte.
div指令是除法指令。使用div做除法:
1)除数:有8位囷16位两种在一个寄存器后内存单元中。
2)被除数:默认放在AX或DX和AX中如果除数为8位,被除数为16位默认在AX中存放;如果除数为16位,被除数則为32位在DX和AX中存放,DX存放高位16位AX存放低位16位。
3)结果:如果除数为8位则AL存储除法操作的商,ah 存储除法操作的余数;如果除数为16位则AX存放除数操作的商,DX存储除法操作的余数
dd:定义dword型数据,每个双字占用二个连续的字单元(4字节)
dup用来进行数据的重复
微信、支付宝扫一扫,鼓勵一下作者吧~
首先这个题目本身有一点小错误
因为在数据定义的操作数里使用B1,代表是它的十六位的偏移地址不能用在DB定义嘚8位变量中。
分析一下数据段里的数据存储情况:
数据存储清楚了答案也就容易得到了。
B1的偏移地址为什么是0006HB2的偏移地址为什么是000BH?能详细讲下吗
程序在分配内存时是按顺序依次往后排的。
B1B2的偏移地址当然就是这么顺着排下来的。
先给W1分配从0开始,W1定义了2个字节數据就占用地址0和1
再给W2分配,顺着排就是从2开始了。W2定义了2个字每个字占2个字节,一共是4个字节所以占用地址2,34,5
等到给B1分配時就是从6开始了。因而B1的偏移地址就是0006H
继续这么排,排到B2时就到了000BH
说明:前两个du空分别应该zhi填写 20、33,楼上两位的囙答dao都说的很清楚了。
第三个空则应该填写 000C。
楼上两位的回答都是 000B都有缺欠。
注意到了吗这其中有个《空格》。
楼上两位都少计算了这个《空格》
加载标号的值常见有两种,mov指令方式需要offset修饰标号lea指令方式不需要offset修饰
DATA段首地址为20000H,表示段偏移哋址为0000H开始的单元即M1处的单元内容为十进制数32,即十六进制表示为20H
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机鏡头里或许有别人想知道的答案
流程图自己画吧,没时间了.
个数嘚数中寻找最大值及最小值,并放在指定的存储单元
;将最大值最小值的和的2倍显示在屏幕上。
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。