• 汇编语言(王爽 第三版)检测点


    这本书购于2015.11.30,我大概从2016.3月开始读,历时大概三个月,我们学校开《微机原理与汇编语言》这门课,不过让人感觉很不爽,课本一开始就丢给你一堆东西,意欲让你记住这一大堆东西,然后开始编程,我对编程语言的学习方面要求比较高,所以开始读这本王爽老师写的汇编语言,目前为止,这本书给我的感觉就是,你能学到很多底层的东西,尤其是像键盘的读写原理,屏幕的显示,特别是对内存的操作和管理,不像课本上给你一个中断让你就能显示字符之类的,它会一步一步教你怎么把要显示的东西写到显存里面,这本书显得比较浅显易懂,让人感觉不错,特别是读了这本书再去看那些难度较高的汇编代码及微机原理,效率会高很多,下面是我读这本书的过程中对书中检测点的解答,仅代表个人观点。

    第一章
    检测点1.1
    1) 13
      (8kb = 8 * 1024 = 2^13)  
    
    2) 1024 0 1023
    
    3) 8*1024 1024
      (1 byte = 8 bit,计算机以byte为存储单位)
    
    4) 1024^3 1024^2 1024
    
    5) 2^6 1 2^4 2^2
      (kb = 2^10 Mb = 2^20 Gb = 2^30)
    
    6) 1 1 2 2 4
    
    7) 512 256
      (8086的寄存器为16位寄存器,一次可以读取两个字节,80386为32位寄存器)
    
    8) 二进制
    第二章
    检测点2.1
    1)
    AX = F4A3h
    AX = 31A3h
    AX = 3123h
    AX = 6246h
    BX = 826Ch
    CX = 6246h
    AX = 826Ch
    AX = 04D8h
    AX = 0482h
    AX = 6C82h
    AX = D882h
    AX = D888h
    AX = D810h
    AX = 6246h
    
    2)
    mov ax,2
    add ax,ax
    add ax,ax
    add ax,ax
    
    检测点2.2
    1)00010h 1000fh
        (0001h+0000h 0001h+ffffh)
    
    2)1001h 2000h
        (偏移地址的范围为0000-ffff,内存单元=段地址*16+偏移地址,当偏移地址最小时,段地址最大,偏移地址最大时,段地址最小)
    
    检测点2.3
    4次修改IP,最后IP为0
    第三章
    检测点3.1
    1)
    mov ax,1
    mov ds,ax
    mov ax,[1000] AX = 2662h
    mov bx,[1001] BX = E626h
    mov ax,bx       AX = E626h
    mov ax,[0000] AX = 2662h
    mov bx,[0002] BX = D6E6h
    add ax,bx        AX = FD48h
    add ax,[0004]  AX = 2C14h
    mov ax,0         AX = 0000h
    mov al,[0002]  AX = 00E6h 
    mov bx,0         BX = 0000h
    mov bl,[000C]  BX = 0026h
    add al,bl          AX = 000Ch
    
    2)
    CS = 2000h,IP = 0,DS = 1000h
    mov ax,6622h  AX = 6622h
    jmp 0ff0:0100h CS = 0ff0 IP = 0100h
    mov ax,2000h  AX = 2000h
    mov ds,ax       DS = 2000h
    mov ax,[0008] AX = C389h
    mov ax,[0002] AX = EA66h
    mov ax,6622h  AX = 6622h
    数据和程序表达上没有区别,只跟存储的地方有关,存在数据段中即为数据,存在程序段中就是程序
    
    检测点3.2
    1)
    mov ax,2000h
    mov ss,ax
    mov sp,10h
    
    2)
    mov ax,1000h
    mov ss,ax
    mov sp,0
    第六章
    检测点6.1
    1)
    mov cs:[bx],ax
    
    2)
    cs
    26或1ah
    pop cs:[bx]
    第九章
    检测点9.1
    1)
    db 8 dup (0)
    
    2)
    offset start
    cs
    3)
    CS = 0006h IP = 00BE
    
    检测点9.2
    mov cl,[bx]
    mov ch,0
    jcxz ok
    inc bx
    
    检测点9.3
    inc cx
      (因为loop s执行时是先将cx减一再与0比较)
    第十章
    检测点10.1
    1000
    0000
    
    检测点10.2
    ax = 3
    
    检测点10.3
    ax = 1006
    
    检测点10.4
    ax = 9call ax时将IPpush到栈中,也就是push 3)
    
    检测点10.5
    1)
    ax = 3
    2)
    ax = 0001 bx = 0000
    第十一章
    检测点11.1
    1 1 0
    1 1 0 
    1 1 0
    1 1 0
    0 0 0
    0 1 0
    0 1 0
    检测点11.2
    0 0 0 1 1
    0 0 0 1 1
    0 0 1 0 0
    0 0 1 0 0
    1 1 0 1 1
    1 1 0 1 1
    1 0 0 0 0
    1 0 0 0 0
    0 1 1 0 1
    检测点11.3
    1)
    jna s0
    jna s0
    2)
    jb s0
    jb s0
    检测点11.4
    ax = 0871h
    检测点12.1
    1)
    039D:0016
    
    2)
    0000:[4N]
    0000:[4N+2]
    检测点13.1
    assume cs:code,ds:data
        data segment
            db 'conversation',0
        data ends
    
        code segment
    start:    mov ax,cs
        mov ds,ax
        mov si,offset show
        mov ax,0
        mov es,ax
        mov di,200h
        mov cx,offset showend-offset show
        cld
        rep movsb
    
        mov ax,0
        mov es,ax
        mov word ptr es:[7ch*4],200h
        mov word ptr es:[7ch*4+2],0
        
        mov ax,data
        mov ds,ax
        mov si,0
        mov ax,0b800h
        mov es,ax
        mov di,12*160
        
    s:    cmp byte ptr [si],0
        je ok
        mov al,[si]
        mov es:[di],al
        mov al,2
        mov es:[di+1],al
        inc si
        add di,2
        mov bx,offset s-offset ok
        int 7ch
        
    ok:    mov ax,4c00h
        int 21h
    show:    push bp
        mov bp,sp
        add [bp+2],bx
        pop bp
        iret
    showend:nop
        code ends
        end start
    检测点13.2
    1)
    错误,不能向BIOS中写程序
    2)
    错误,19h中断在操作系统以前,而DOS由操作系统控制即在操作系统以后
    检测点14.1
    1)
    mov al,2
    out 70h,al
    in al,71h
    2)
    mov al,0
    out 71h,al
    mov al,2
    in 70h,al
    检测点14.2
    在不考虑溢出的情况下:
    mov ax,__
    mov bx,ax
    shl bx,1
    mov cl,3
    shl ax,cl
    add ax,bx
    第十五章
    检测点15.1
    1)
    pushf
    call dword ptr ds:[0]
    
    2)
    在中断向量表中设置新的int9中断入口地址的时候不让其发生中断,即
    cli
    mov word ptr es:[9*4],offset int9
    mov word ptr es:[9*4+2],cs
    sti
    恢复中断向量表int9的源地址时同理:
    cli
    push ds:[0]
    pop es:[9*4]
    push ds:[2]
    pop es:[9*4+2]
    sti
    第十六章
    检测点16.1
    a[si]
    b
    b
    1
    检测点16.2
    mov ax,data
    mov es,ax
    第十七章
    检测点17.1
    IF = 1 DI(disable interupt)
    IF = 0 EI(enable interupt)
    当执行int16中断时是从缓冲区中读出字符,若缓冲区为空,则int16应该可以响应int9的中断,故IF不一定为1
  • 相关阅读:
    P8334 [ZJOI2022] 深搜 解题报告
    P5420 [CTSC2016]香山的树 解题报告
    ATC 颓废记录
    P8330 [ZJOI2022] 众数 解题报告
    Oracle Form里查看Record History,报错:APPFND01564: Oracle error 1403 in fdxwho
    近三年的任务吧,时时看
    vue中filters使用data或异步数据
    elementUI table表格 cellclassname的使用
    linux常用简化命令
    【数据科学原理与实践】数据准备
  • 原文地址:https://www.cnblogs.com/monster-prince/p/5525220.html
Copyright © 2020-2023  润新知