汇编笔记3(数据)

第7章(更灵活定位内存):

and ah,10011010B    与运算(一0则0)可以把操作位设为0(11111101把第7位设为0)

or ah,10010010B        或运算(一1则1)可以把操作位设为1(00000010把第7位设为0)

'......'的方式表示ASCII码给出

db '1234'   = db 31h,32h,33h,34h

[bx+idata]访问偏移地址   其他写法[idata+bx],idata[bx],[bx].idata,[bx][si],[si][bx](注意常数在后有.)

[bx+idata]方便数组访问,idata确定元素开头,dx作为相对地址变化。例:

[0+bx]    'abcde'                 0[bx]

[5+bx]    'fghij'                     5[bx]

si和di,作为bx的补充,性质相同

[bx+si+idata]类似[bx+idata]

需要暂存数据都采用栈的方法(ss栈段)

另:1.字母大小写相差20h

       2.利用and or 和第5位来决定大小写

      3.采用0[]  8[]这种形式可以只使用一个偏移寄存器提高效率

基础复习:

     1.一个内存单元8bit,表示为两位16进制数,一个字节8bit。

      2.不能直接把内存mov到内存

实际操作暴露的问题:

        1.能操作数值的就是几个寄存器,没有变量

         2.采用的寄存器不同(ax,al)一次读取的内存不同,地址所需偏移不同。

         3.tap和空格产生同样对齐效果但占用内存不同

         4.要双层循环应当先把cx临时存在其他地方(尽量不要在寄存器,栈),内层循环后再带回

第8章(数据处理):

reg表示寄存器,sreg表示段寄存器

[bx]寻址形式的只有bx,bp,si,di可用(8086),bx与bp,si与di不共存

bp默认段地址为ss,bx默认段地址ds。。。可以显式指定

数据位置:1.idata立即数 2.寄存器 3.内存

指明数据长度方法:

     1.根据转移的寄存器确定

     2.X ptr 例:inc word ptr [bx]

    3.命令默认:push字

数据操作过程:确定位置,确定类型(长度),修改

汇编上的结构体:bx定位整个结构体,idata定位某一数据项,si定位数组项元素

div:除法 被除数位数16(32),除数位数8(16)(div reg或者div 内存单元)

被除数为ax     除数为8位(决定类型),al存商,ah存余

被除数为 dx放高16位,ax放低16位      除数为16位(决定类型),ax存商,dx存余

dup:类型 重复次数 dup(重复内容)例:db 3 dup(1,2)===>db 1,2,1,2,1,2

实际操作的问题:

         1.div后面不能直接接除数,要存在寄存器中(除数位数由此决定)使用。

        2.一个偏移地址只决定一个内存单元

        3.出现结果不写入时,先检查分配内存是否包含

你可能感兴趣的:(汇编笔记3(数据))