汇编基础 笔记5(《汇编语言》第七章)

来源:互联网 发布:大屏电子书阅读器 知乎 编辑:程序博客网 时间:2024/05/16 05:01

========================================

更灵活的定位内存地址的方法和相关编程方法

========================================

and:将相应位设为1,其它位不变

or:将相应位设为0,其它位不变

-----------------------------------

用R命令分析下列程序data段的地址:

assume ds:data 

data segment 

        db 'unIX' 

        db 'foRK' 

data ends 

code segment 

start:  mov al,'a' 

        mov bl,'b' 

        mov ax,4c00h 

        int 21h 

code ends 

end start 

 

-r:ds=0b2d

则,程序从0b3dh段开始(别忘了psp前缀占了256个字节=100h,段地址的话就是10h)

data段是程序中的第一个段,它就在程序的起始处,所以它的段地址为0b3dh

----------------------------------------

----------------------------------------

[bx+idata]:

-----------

(ax)=((ds)*16+(bx)+200)

mov ax,[bx+200]

mov ax,[200+bx]

mov ax,200[bx]

mov ax,[bx].200

-------------------------

比较c和汇编语言定位字符串中字符的方式:

c:a[i],b[i]

汇编:0[bx],5[bx]

[bx+idata]为高级语言实现数组提供了便利机制

=======================================

SI和DI是8086cpu中和bx功能相近的寄存器

但它们不能够分成两个8位寄存器

=======================================

实验六(2)

assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment

        dw 0,0,0,0,0,0,0,0

stacksg ends

datasg segment

        db '1. display      '

        db '2. brows        '

        db '3. replace      '

        db '4. modify       '

datasg ends

codesg segment

start:  mov ax,stacksg

        mov ss,ax

        mov sp,16

        mov ax, datasg

        mov ds,ax

        mov bx,3

        mov cx,4

      s:push cx

        mov si,0

        mov cx,4

        s0:mov al,[bx][si]

           and al,11011111b

           mov [bx][si],al

           inc si

           loop s0

        add bx,16

        pop cx

        loop s

        mov ax,4c00h

        int 21h

codesg ends

end start

--------------------------------------

大小写转换的方法

二重循环

二重循环中栈的应用

=======================================

=======================================