• 汇编语言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

  • 相关阅读:
    Log4j appender、layout
    EhCache缓存框架的使用
    Log4j rootLogger根配置以及4种日志级别
    开发chrome 插件, background.js中 console log 看不到解决方法
    Windows cmd 长时间不输出新内容 直到按下ctrl + c 取消或者回车的解决办法
    如何查看当前分支从哪个支线创建而来
    C# 获取相对路径的字符串
    解决adobe air sdk打包 apk后自动在包名前面加上air. (有个点)前缀的问题
    sublime text 输入法候选词不跟随光标
    Windows 批处理设置dns ,解决能上qq不能开网页
  • 原文地址:https://www.cnblogs.com/mayingkun/p/4528167.html
Copyright © 2020-2023  润新知