青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

JACKY_ZZ[貓貓愛吃魚]

春風拂面兩頰紅,秋葉灑地一片金。 夏荷搖曳一身輕,冬雪覆蓋大地銀。
posts - 30, comments - 123, trackbacks - 0, articles - 0

2019年11月28日

base.h
 1 #ifndef BASE_H
 2 #define BASE_H
 3 
 4 #include <stdio.h>
 5 
 6 class Base
 7 {
 8 public:
 9     Base(int val) : m_val(val)
10     {
11         printf("Base::Base(int val) @ 0x%08X\n"this);
12     }
13 
14     virtual void say()
15     {
16         printf("void Base::say() @ 0x%08X\n"this);
17         printf("val = %d\n", GetVal());
18     }
19 
20     virtual ~Base()
21     {
22         printf("Base::~Base() @ 0x%08X\n"this);
23     }
24 
25 protected:
26     int GetVal() { return m_val; }
27 
28 private:
29     int m_val;
30 };
31 
32 #endif
child.h
 1 #ifndef CHILD_H
 2 #define CHILD_H
 3 
 4 #include <stdio.h>
 5 #include "base.h"
 6 
 7 class Child : public Base
 8 {
 9 public:
10     Child(int val) : Base(val)
11     {
12         printf("Child::Child(int val) @ 0x%08X\n"this);
13     }
14 
15     void say()
16     {
17         printf("void Child::say() @ 0x%08X\n"this);
18         printf("val = %d\n", GetVal());
19     }
20 
21     ~Child()
22     {
23         printf("Child::~Child() @ 0x%08X\n"this);
24     }
25 };
26 
27 #endif
28 
main.cpp
  1 #include "base.h"
  2 #include "child.h"
  3 
  4 static void test0();
  5 static void test();
  6 static void virfunc_call(Base *base);
  7 
  8 void test0()
  9 {
 10     int src = 1;
 11     int dst;   
 12 
 13 #ifdef WIN32
 14     dst = src;
 15 #else
 16     asm ("mov %1, %0\n\t"
 17         "add $1, %0"
 18         : "=r" (dst) 
 19         : "r" (src));
 20 #endif
 21 
 22     printf("dst=%d\n", dst);
 23 }
 24 
 25 void test(Base *base)
 26 
 27     int addr = 0;
 28 
 29 #ifdef WIN32
 30     printf("[1] addr=0x%08X base=0x%P\n", addr, base);
 31 #else
 32     printf("[1] addr=0x%08X base=0x%08X\n", addr, base);
 33 #endif
 34 
 35 #ifdef WIN32
 36     addr = *((int *)base);
 37 #else
 38     asm (
 39         "movl %0, %1\n\t"
 40         : "=r" (addr)
 41         : "r" (base)
 42     );
 43 #endif
 44 
 45 #ifdef WIN32
 46     printf("[2] addr=0x%08X base=0x%P\n", addr, base);
 47 #else
 48     printf("[2] addr=0x%08X base=0x%08X\n", addr, base);
 49 #endif
 50 }
 51 
 52 static void virfunc_call(Base *base)
 53 {
 54     typedef void (*FUNC)();
 55 
 56     int *pAddrBase = (int *)base;
 57     int addr = *(int *)base;
 58     int *pVirtualFuncBase = (int *)(*pAddrBase);
 59 
 60 #ifdef WIN32
 61     printf("\nvirfunc=0x%P\npAddrBase=0x%P\npVirtualFuncBase=0x%P\n\n", virfunc_call, pAddrBase, pVirtualFuncBase);
 62 #else
 63     printf("\nvirfunc=0x%08X\npAddrBase=0x%08X\npVirtualFuncBase=0x%08X\n\n", virfunc_call, pAddrBase, pVirtualFuncBase);
 64 #endif
 65 
 66     FUNC func = reinterpret_cast<FUNC>(*pVirtualFuncBase);
 67 
 68 #ifdef WIN32
 69     __asm {
 70         mov ecx, base
 71     }
 72 #else
 73     __asm__ __volatile__(
 74         "movl %0, %%ecx"
 75         :
 76         : "r" (base)
 77         :
 78     );
 79 #endif
 80 
 81     func();
 82 }
 83 
 84 int main(int argc, char *argv[])
 85 {
 86     Base *base1 = nullptr, *base2 = nullptr;
 87 
 88     base1 = new Base(1);
 89     // base1->say();
 90     virfunc_call(base1);
 91     // test(base1);
 92     delete base1;
 93 
 94     base2 = new Child(2);
 95     // base2->say();
 96     virfunc_call(base2);
 97     // test(base2);
 98     delete base2;
 99 
100     return 0;
101 }


VC++
cl /DWIN32 main.cpp


G++
g++ -o main main.cpp

posted @ 2019-11-28 11:05 jacky_zz 閱讀(206) | 評論 (0)編輯 收藏

2015年1月8日

bootloader.asm
    org 0x7c00
start:
    jmp main_entry

stack:
    times 
128 db 0
tos:
    db 
0

main_entry:
    mov ax, cs
    mov ds, ax

    mov ax, stack
    mov ss, ax
    mov sp, start

    ; initialize es:bx, read data to 
0x0000:0x7e00
    mov ax, 
0x0000
    mov es, ax
    mov bx, 
0x7c00+0x200

    mov ah, 
0x02    ; read function
    mov al, 
0x01    ; read 1 sectors
    mov ch, 
0x00    ; 
    mov cl, 
0x02    ; read from 2nd section
    mov dh, 
0x00    ;
    mov dl, 
0x80    ; read from 1st hard disk
    
int 0x13
    jc .die

    ; install interrupt 
0x80
    call 
0x7e00

    ; call interrupt 
0x80
    mov ax, msg1
    
int 0x80

    ; call interrupt 
0x80
    mov ax, msg2
    
int 0x80

.die:
    jmp $

print_char:    
    mov ah, 
0x0e
    
int 0x10
    ret

msg1:    db 
"Loading system "0x0d0x0a0
msg2:    db 
"Hello, World!"0x0d0x0a0
crlf:    db 
0x0d0x0a0

fill_zero:
    times 
510-($-$$) db 0

magic:
    db 
0x550xAA

lib16.asm
    org 0x7e00
install_int:
    mov ax, 
0
    mov es, ax

        mov ax, int_0x80
    mov bx, 
0x80*4
    mov word [es:bx], ax    ; ip
    mov word [es:(bx
+2)], 0    ; cs

    ret

int_0x80:
    pusha

    mov si, ax
    mov ah, 
0x0e
    mov al, [ds:si]

.loop:
    cmp al, 
0
    je .exit
    
int 0x10

    inc si
    mov al, [ds:si]

    jmp .loop
.exit:
    popa
    iret

fill_zero:
    times 
512-($-$$) db 0

結果圖:

posted @ 2015-01-08 14:34 jacky_zz 閱讀(317) | 評論 (0)編輯 收藏

2014年12月28日

 

    org 100h
    jmp start
    
stack:
    db 
256 dup(0)
topofstack:
    db 
0

; add your code here
start:
    mov ax, cs
    mov ds, ax
    
    mov ss, ax
    mov sp, topofstack
    
    mov ax, 
0x0003
    push ax
    call f
    pop ax
    hlt
    
f:
    push bp
    push ax
    
    mov bp, sp
    mov ax, [bp
+6]
    cmp ax, 
0x0001
    je exit
    
    dec ax
    push ax
    call f
    pop ax
    
    mul [bp
+6]
    
exit:
    mov [bp
+6], ax
    pop ax
    pop bp
    ret

 

posted @ 2014-12-28 21:08 jacky_zz 閱讀(359) | 評論 (0)編輯 收藏

2014年12月26日

main:
    org 
0x0100
    jmp start

stack:
    db 
256 dup(0)
tos:
    dw 
0

start:
    mov ax, cs
    mov ds, ax
    mov ss, ax
    mov sp, tos
    
    mov ax, end
    mov bx, main
    sub ax, bx
    
    mov bx, 
2
    div bx
    cmp dx, 
0
    je next_step
    inc ax
    
next_step:
    mov bx, ax
    mov si, 
0
    mov di, 
0
    
.
0:
    cmp di, 
0
    je .
1
    
    mov ax, 
0x0000
    push ax
    call print_char
    pop ax

.
1:    
    mov dx, cs:[si]
    mov ch, 
0x04
    mov cl, 
0x04
        
.
2:
    mov ax, 
0
    rol dx, cl
    
    mov al, dl
    and al, 
0x0f
    add al, 
0x30
    cmp al, 
0x3a
    jl .
3
    add al, 
0x07
.
3:
    
    push ax
    call print_char
    pop ax
    
    dec ch
    cmp ch, 
0
    jne .
2
     
    inc di
    add si, 
2
    
    dec bx
    cmp bx, 
0
    jne .
0
    
    hlt

print_char:
    push bp
    push ax
    push bx
    
    mov bp, sp
    mov ax, [bp
+8]
    mov ah, 
0x0e
    mov bx, 
0x0000
    
int 0x10

    pop bx
    pop ax
    pop bp
    ret

end:
    dw 
0

posted @ 2014-12-26 16:09 jacky_zz 閱讀(586) | 評論 (0)編輯 收藏

2014年12月19日

; You may customize this and other start-up templates; 
; The location of 
this template is c:\emu8086\inc\0_com_template.txt

    org 100h
start:
    jmp main

stack:
    db 
256 dup(0)
code_len:
    dw 
0 
    
; add your code here
main:
    mov ax, cs
    mov ds, ax
    mov ss, ax
    mov sp, stack
+256
    
    mov ax, end
    mov bx, main
    sub ax, bx
    mov bx, 
2
    div bx
    
    cmp dx, 
0
    je next_step
    inc ax
          
next_step:
    mov bx, code_len
    mov [bx], ax
    mov bx, main
    
    push ax
    push bx
    push cs
    call dump_memory
   
    pop ax
    pop bx
    pop ax
    hlt         
    
dump_memory:
    push bp
    push ax
    push bx
    push cx
    push dx
    push ds
    
    mov bp, sp    
    mov ax, [bp
+14]
    mov bx, [bp
+16]
    mov cx, [bp
+18]
    xor dx, dx
    mov ds, ax
    
rotate_memory:
    mov ax, ds:[bx]
    push ax
    call write_hex
    pop ax
    add bx, 
2
    loop rotate_memory  
    
    pop ax
    mov ds, ax
    
    pop dx
    pop cx
    pop bx
    pop ax
    pop bp
    ret
    
write_hex:
    push bp
    push ax
    push bx
    push cx
    push dx
    
    mov bp, sp
    mov bx, [bp
+12]
    
    xor ax, ax
    xor cx, cx
    mov ch, 
4 
    
rotate:
    mov cl, 
4
    rol bx, cl
    mov al, bl
    and al, 
0x0f
    add al, 
0x30
    cmp al, 
0x3a
    jl printit
    add al, 
0x07
printit:
    mov dl, al
    push dx
    call write_char
    pop dx
    
    dec ch
    jnz rotate
    
    mov dx, 
0x0000
    push dx
    call write_char
    pop dx
    
    pop dx
    pop cx
    pop bx
    pop ax
    pop bp
    ret
    
write_char:
    push bp
    push ax
    push dx
    
    mov bp, sp
    mov ah, 
0x02
    mov dx, [bp
+8]
    
int 0x21 
    
    pop dx
    pop ax
    pop bp
    ret
    
end: db 
0x55,0xaa

posted @ 2014-12-19 22:53 jacky_zz 閱讀(463) | 評論 (0)編輯 收藏

2014年12月18日

; You may customize this and other start-up templates; 
; The location of 
this template is c:\emu8086\inc\0_com_template.txt

    org 100h
    jmp start

data:
    dw 
32 dup(0)
        
stack:
    dw 
256 dup(0)

start:
; add your code here    
    mov ax, cs
    mov ds, ax
    mov bx, data
    
    mov ss, ax
    mov sp, stack
+31
    
    push 
0x0001
    push 
0x0002
    push 
0x0003
    call test_proc
    
    hlt
    
test_proc:
    push bp
    mov bp, sp
    
    mov ax, [bp
+8]
    push ax
    call write_char
    
    mov ax, [bp
+6]
    push ax
    call write_char
    
    mov ax, [bp
+4]
    push ax
    call write_char
    
    pop bp
    ret 
6
    
write_char:
    push bp
    mov bp, sp
    
    mov ax, [bp
+4]
    mov dl, al
    add dl, 
0x30
    cmp dl, 
0x3a
    jl printit
    add dl, 
0x07
    
printit:
    mov ah, 
0x02
    
int 0x21
    pop bp
    ret 
2

posted @ 2014-12-18 17:10 jacky_zz 閱讀(596) | 評論 (0)編輯 收藏

org 100h

; add your code here
    mov ax, cs
    mov ds, ax
    mov ss, ax
    
    mov ax, 
0x0000
    mov bx, 
0x106f
    mov ch, 
0x04
    
rotate:
    mov cl, 
0x04
    rol bx, cl
    mov al, bl
    and al, 
0x0f
    add al, 
0x30
    cmp al, 
0x3a
    jl printit
    add al, 
0x07
    
printit:
    mov dl, al
    mov ah, 
0x02
    
int 0x21
    dec ch
    jnz rotate    

ret

posted @ 2014-12-18 16:24 jacky_zz 閱讀(346) | 評論 (0)編輯 收藏

2014年12月17日

; You may customize this and other start-up templates; 
; The location of 
this template is c:\emu8086\inc\0_com_template.txt

org 100h

; add your code here 
    mov ax, cs
    mov ds, ax 
    mov ss, ax    
    mov sp, stack 
+ 256 - 1    
    mov si, 
0
    
    push 
0x105e
    call write_bin
    pop ax 
    
    call write_space2
    
    push 
0x0002
    push 
0x78fd
    call write_num
    pop ax
    pop ax
    
    call write_space2
    
    push 
0x0008
    push 
0x78fd
    call write_num
    pop ax
    pop ax
    
    call write_space2
    
    push 
0x000A
    push 
0x78fd
    call write_num
    pop ax
    pop ax
    
    call write_space2
    
    push 
0x0010
    push 
0x78fd
    call write_num
    pop ax
    pop ax
    
    ret

write_space2:
    mov cx, 
2
loop_write_char:
    call write_space
    loop loop_write_char
    ret

write_space:
    push 
0x0000
    call write_char
    pop ax
    ret
    
write_char:    
    push ax
    push bx
    push cx
    push dx
    mov bp, sp
    
    mov ah, 
0x0e
    mov bx, ss:[bp
+10] ; parameter 1
    mov al, bl
    mov bx, 
0x000c
    
int 0x10
    
    pop dx
    pop cx
    pop bx
    pop ax
    ret

write_bin:
    mov bp, sp       
    mov ax, ss:[bp
+2] ; parameter 1
    mov cx, 
16
    
s:
    xor dx, dx
    rcl ax, 
1
    adc dl, 
0x30
    
    push dx
    call write_char
    pop dx 
    loop s
    ret
    
write_num:
    mov bp, sp
    mov ax, ss:[bp
+2] ; parameter 1
    mov bx, ss:[bp
+4] ; parameter 2
    mov cx, 
0
    
loop_num_div:
    mov dx, 
0
    div bx
    push dx
    inc cx
    cmp ax, 
0
    jne loop_num_div
    
loop_num_disp:
    pop dx
    
    add dl, 
0x30
    cmp dl, 
0x3A
    jl disp_char
    add dl, 
0x07

disp_char:    
    push dx
    call write_char
    pop dx
    
    loop loop_num_disp
    ret 
    
stack:
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
    dw 
0000000000000000
end_flag: db 
0x11

posted @ 2014-12-17 16:55 jacky_zz 閱讀(487) | 評論 (0)編輯 收藏

org 100h

; add your code here

    mov ax, cs
    mov ds, ax
    
    mov ax, 
0xb800
    mov es, ax
    
    xor ax, ax
    xor bx, bx
    xor cx, cx
    xor dx, dx
    
    mov ax, 
0x105e ;除數
    mov bx, 
10 ;被除數

s:    
    mov dx, 
0 ;清空余數
    div bx ;除以被除數
    push dx ;把余數壓棧
    inc cx ;循環次數加1
    cmp ax, 
0 ;商不為0繼續除
    jne s
    
    mov bx, 
0
    
p1: 
    pop dx
    add dl, 
0x30
    
    mov es:[bx], dl
    inc bx
    mov es:[bx], 
0x0c
    inc bx
    loop p1
    
ret

posted @ 2014-12-17 09:40 jacky_zz 閱讀(519) | 評論 (0)編輯 收藏

org 100h

; add your code here

    mov ax, cs
    mov ds, ax
    
    mov ax, 
0xb800
    mov es, ax
    
    xor ax, ax
    xor bx, bx
    xor dx, dx
    
    mov dl, 
0x2f
    mov al, dl
    shr al, 
4
    add al, 
0x30
    cmp al, 
0x3a
    jl p1
    add al, 
0x07

p1:
    mov es:[bx], al
    inc bx
    mov es:[bx], 
0x0c
    inc bx
    
    mov al, dl
    and al, 
0x0f
    add al, 
0x30
    cmp al, 
0x3a
    jl p2
    add al, 
0x07
    
p2:
    mov es:[bx], al
    inc bx
    mov es:[bx], 
0x0c
    inc bx
    
ret

posted @ 2014-12-17 09:31 jacky_zz 閱讀(361) | 評論 (0)編輯 收藏

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品黑丝| 久久综合国产精品| 亚洲精选中文字幕| 欧美另类videos死尸| av不卡在线| 亚洲一区二区三区乱码aⅴ| 欧美日韩综合不卡| 亚洲欧美国产高清va在线播| 亚洲欧美另类在线观看| 国产一区二区剧情av在线| 久久全国免费视频| 欧美不卡视频一区发布| 中文欧美字幕免费| 亚洲综合电影| 在线观看欧美日韩| 99av国产精品欲麻豆| 国产精品自拍三区| 欧美国产极速在线| 国产精品vvv| 久久久综合精品| 欧美黄在线观看| 欧美亚洲视频| 欧美sm视频| 午夜精品美女自拍福到在线| 久久久www免费人成黑人精品| 亚洲激情国产| 亚洲综合精品| 亚洲精选在线观看| 亚洲欧美文学| 99视频精品全国免费| 欧美在线综合视频| 99精品视频免费观看视频| 亚洲欧美一区二区在线观看| 亚洲精品1区| 香蕉成人伊视频在线观看 | 美国三级日本三级久久99| 在线中文字幕日韩| 久久久99久久精品女同性| 亚洲一区二区视频在线观看| 久久综合色88| 欧美专区在线观看| 欧美日韩精品一区二区在线播放 | 麻豆精品精华液| 国产精品第十页| 亚洲风情亚aⅴ在线发布| 国产伦精品一区二区三区照片91 | 亚洲国产黄色| 国产一区二区黄色| 一区二区三区.www| 99国产精品99久久久久久| 欧美专区福利在线| 午夜在线成人av| 欧美日韩一区视频| 亚洲激情av| 亚洲激情小视频| 久久午夜电影网| 久久精品九九| 国产视频在线一区二区| 夜夜嗨av一区二区三区四区 | 黄色精品免费| 午夜免费在线观看精品视频| 亚洲一区免费视频| 欧美色123| 99视频在线精品国自产拍免费观看| 亚洲片在线资源| 欧美chengren| 亚洲精品视频一区| 99国产精品国产精品久久| 欧美成人免费全部观看天天性色| 免费观看一区| 亚洲国产日韩一区| 男人插女人欧美| 亚洲欧洲日韩女同| 99精品欧美一区二区蜜桃免费| 欧美国产日本高清在线| 亚洲欧洲免费视频| 一区二区高清在线| 欧美午夜精品伦理| 午夜视频在线观看一区二区三区| 欧美一区亚洲| 在线观看中文字幕亚洲| 女同性一区二区三区人了人一 | 久久综合福利| 亚洲国产婷婷| 欧美日韩国产大片| 亚洲欧美日韩国产综合| 久久久亚洲综合| 91久久中文| 欧美色视频日本高清在线观看| 亚洲一区三区视频在线观看| 久久免费精品日本久久中文字幕| 激情综合色综合久久| 欧美成人国产va精品日本一级| 亚洲精品一区在线观看香蕉| 午夜在线电影亚洲一区| 狠狠久久婷婷| 欧美日韩大陆在线| 午夜精品在线| 亚洲高清色综合| 羞羞漫画18久久大片| 在线视频观看日韩| 欧美日韩一级黄| 久久久久.com| 一区二区三区日韩| 免费在线国产精品| 午夜在线视频观看日韩17c| 亚洲福利视频网站| 国产精品区一区| 欧美成人一区二区三区| 亚洲欧美一区二区原创| 亚洲三级毛片| 久久综合色综合88| 亚洲一区二区三区中文字幕在线| 伊人成人在线视频| 国产精品国产成人国产三级| 另类专区欧美制服同性| 亚洲一区二区在线免费观看| 亚洲国产精品嫩草影院| 久久一区二区三区四区五区| 亚洲一区三区电影在线观看| 91久久精品国产91久久性色| 国产视频一区二区在线观看| 欧美视频一区| 欧美黄色网络| 六十路精品视频| 久久国产福利国产秒拍| 在线综合视频| 99精品国产热久久91蜜凸| 亚洲国产99精品国自产| 麻豆久久婷婷| 玖玖视频精品| 久久久久国产精品麻豆ai换脸| 亚洲女同在线| 亚洲一区二区三区高清| 一区二区三区 在线观看视| 亚洲日本中文字幕| 一区二区三区在线观看国产| 国产日韩一区欧美| 国产精品试看| 国产精品久久激情| 国产精品国产三级国产a| 欧美日韩国产成人高清视频| 欧美国产日韩在线| 欧美精品乱人伦久久久久久| 欧美黄色一区二区| 欧美国产视频日韩| 欧美日韩大片| 欧美性猛片xxxx免费看久爱| 欧美视频在线观看| 国产精品乱码人人做人人爱| 国产精品青草久久| 国产精品入口夜色视频大尺度| 国产精品入口福利| 国产欧亚日韩视频| 狠狠综合久久av一区二区老牛| 永久久久久久| 亚洲人成网站777色婷婷| 亚洲毛片在线观看.| 一区二区三区.www| 欧美一区1区三区3区公司| 久久国产精品久久精品国产| 久久中文字幕导航| 欧美韩日精品| 99视频国产精品免费观看| 亚洲一区二区日本| 久久国产精品第一页| 奶水喷射视频一区| 欧美揉bbbbb揉bbbbb| 国产乱码精品一区二区三区av| 国产在线视频欧美| 亚洲片在线资源| 亚洲欧美日韩精品久久奇米色影视| 久久国产福利| 亚洲精品黄网在线观看| 亚洲午夜在线观看| 久久久综合激的五月天| 欧美日本国产| 国产真实久久| 亚洲手机成人高清视频| 久久久成人网| 91久久精品美女高潮| 午夜天堂精品久久久久| 农夫在线精品视频免费观看| 国产精品亚洲片夜色在线| 亚洲国产欧美日韩精品| 欧美亚洲自偷自偷| 亚洲黄色免费电影| 亚洲欧美一区二区原创| 欧美激情视频网站| 国产亚洲欧洲997久久综合| 99精品欧美| 另类酷文…触手系列精品集v1小说| 日韩视频在线一区二区三区| 久久久亚洲欧洲日产国码αv| 欧美性色综合| 亚洲伦理中文字幕| 老司机一区二区三区| 亚洲欧美99| 国产精品成人播放| 亚洲精品资源|