zoukankan      html  css  js  c++  java
  • 汇编语言4

    程序0:把字符串 "adcdef"转换成大写, 把字符串 "FGHJK"转换成小写

    data segment
    db 'adcdef'
    db 'XCVBNM'
    data ends


    code segment

    start:
    mov ax,data
    mov ds,ax

    mov bx,0
    mov cx,6
    mov di,0

    s: mov al,ds:[bx]
    and al,1011111b
    mov ds:[bx],al

    mov al,ds:[bx+6]
    or al,0100000b
    mov ds:[bx+6],al
    add bx,1
    loop s 


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


    程序1:利用栈 逆序存放 dw 0111h,0222h,0333h,0444h,0555h,0666h,0777h,0888h
    assume cs:code, ds:data,  ss:stack
    data segment
    dw 0111h,0222h,0333h,0444h,0555h,0666h,0777h,0888h
    data ends


    stack segment
    dw 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
    stack ends

    code segment

    start:
    mov ax,data
    mov ds,ax

    mov ax,stack
    mov ss,ax
    mov sp, 020h

    mov bx,0
    mov cx,8
    mov si,0
    s: push [bx + si]
    add si,2
    loop s


    mov si,0
    mov cx,8
    s1: pop [bx + si]
    add si,2
    loop s1  

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


    程序2:定义6个字 数据存放在cs:0 c单元中,累加存放ax中
    assume cs:codesg
    codesg segment

    dw 0123h,0e32h,0a21h,0c43h,0344h,0544h

    start:
    mov bx,0
    mov cx,6
    mov ax,0
    s:add ax,cs:[bx]
    add bx,2
    loop s

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


    mov ax,datasg
    mov ds,ax
    mov bx,0

    mov cx,5
    s: mov al,0[bx]  
    and al,11011111b
    mov 0[bx],al
    mov al,5[bx]  
    or al,00100000b
    mov 5[bx],al
    inc bx
    loop s

    程序3:将 ffff:0-b 的数据按字节 复制到200-20b
    assume cs:codesg
    codesg segment

    mov bx,0
    mov cx,12
    mov ax,0ffffh
    mov ds,ax

    mov ax,0020h
    mov es,ax

    s: mov dl,[bx]
    mov es:[bx],dl
    inc bx
    loop s

    mov ax,4c00h
    int 21h
    codesg ends
    end


    程序4:运算 ffff:0-b 的数据和  存dx
    assume cs:codesg
    codesg segment

    mov ax,0ffffh
    mov ds,ax
    mov dx,0
    mov bx,0
    mov cx,12

    s:add al,[bx]
    mov ah,0
    add dx,ax
    inc bx
    loop s

    mov ax,4c00h
    int 21h
    codesg ends
    end

    程序5:补全下面的程序,使其可以将 10000H~1000FH 中的8个字,逆序复制到20000H~2000FH中。
    mov ax, 2000H
    mov ds, ax
    mov ax,1000
    mov ss,ax
    mov sp,0
    pop [E]
    pop [C]
    pop [A]
    pop [8]
    pop [6]
    pop [4]
    pop [2]
    pop [0]

    程序6:在debug中,用“d 0:0 1f”查看内存,结果如下
    1000:0000  8E C1 36 52 73 70 65 63-69 66 69 65 64 20 66 69   ..6Rspecified fi
    1000:0010  6C 65 6E 61 6D 65 0D 0A-20 20 20 20 20 20 20 20   lename..

    mov ax,1000
    mov ds,ax
    mov ax,[0000]      ax=c18e
    mov bx,[0001]      bx=36c1
    mov ax,bx          ax=36c1
    mov ax,[0000]      ax=c18e
    mov bx,[0002]      bx=5236
    add ax,bx          ax=13c4
    add ax,[0004]      ax=8437
    mov ax,0           ax=0000
    mov al,[0002]      ax=0036
    mov bx,0           bx=0
    mov bl,[000c]      bx=0064
    add al,bl          ax=009a


    mov ax,1000
    mov ds,ax
    mov ax,2000
    mov ss,ax
    mov sp,10
    push ds[0]
    push ds[2]
    push ds[4]
    push ds[6]
    push ds[8]
    push ds[a]
    push ds[c]
    push ds[e]


    程序7:下面的3条指令执行后、CPU几次修改IP?都是在什么时候?最后IP中的值是多少?
     MOV AX,BX
     SUB AX,BX
     JMP AX

    答:修改了4次 IP=+2 ,IP=+2,IP=+2,IP=0
    分析:
     假设 CS=1500 IP=0100
        第一次
     CS:IP指向15100内存处,读取指令MOV AX,BX , 此时IP为=102,CS不变。
        第二次
     CS:IP指向15102内存处,读取指令SUB AX,BX , 此时IP为=104,CS不变。
        第三次
     CS:IP指向15104内存处,读取指令JMP AX , IP变更为=106(用于下次指向内存)
        第四次  执行JMP AX  IP=0


    程序8:1.给定段地址为0001H,仅通过改变偏移地址寻址,CPU的寻址范围为(00010)到(1000F).

     分析:偏移地址为16位,范围是0000--FFFF,给定了段地址那么就有 0001*16+0000 到 0001*16+FFFF,即00010到1000F。


    2.有一数据存放在内存20000h 单元中,现给定段地址SA,若想用偏移地址寻到此单元。
       则SA应满足的条件是:最小为(1001),最大为(2000)

     分析:最小值: 20000-ffff=10001
          10001*16 明显大于20000了,应该是1001
                1001*16+fff0=20000
     
        最大值:(20000-0)/16=2000

  • 相关阅读:
    对象池使用时要注意几点
    Flash3D学习计划(一)——3D渲染的一般管线流程
    714. Best Time to Buy and Sell Stock with Transaction Fee
    712. Minimum ASCII Delete Sum for Two Strings
    647. Palindromic Substrings(马拉车算法)
    413. Arithmetic Slices
    877. Stone Game
    338. Counting Bits
    303. Range Sum Query
    198. House Robber
  • 原文地址:https://www.cnblogs.com/mayingkun/p/4528167.html
Copyright © 2011-2022 走看看