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

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 閱讀(360) | 評論 (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 閱讀(587) | 評論 (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 閱讀(465) | 評論 (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 閱讀(597) | 評論 (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 閱讀(489) | 評論 (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>
            国产精品久久77777| 激情一区二区| 亚洲在线一区二区| 一本大道久久a久久精品综合| 欧美成人高清视频| 日韩视频一区二区三区| 亚洲激情六月丁香| 欧美日韩一级黄| 欧美一区二区三区免费观看 | 亚洲日本中文字幕| 日韩视频二区| 国产精品免费一区二区三区在线观看| 亚洲伊人网站| 久久高清一区| 亚洲欧洲一区| 亚洲小说欧美另类婷婷| 黄色小说综合网站| 91久久精品美女| 国产精品亚洲产品| 欧美jizzhd精品欧美巨大免费| 欧美成人一区二区三区在线观看| 亚洲图片欧洲图片日韩av| 欧美一级播放| 亚洲精品一区二区三区福利| 亚洲毛片在线观看.| 国产美女精品视频| 亚洲国产精品第一区二区| 欧美日韩伦理在线免费| 久久婷婷国产综合尤物精品| 欧美高清在线播放| 久久精品中文| 欧美喷水视频| 免费观看亚洲视频大全| 欧美视频一区二区在线观看| 久久婷婷蜜乳一本欲蜜臀| 欧美老女人xx| 裸体一区二区三区| 国产农村妇女毛片精品久久莱园子| 蜜臀av在线播放一区二区三区| 欧美日韩国内自拍| 你懂的国产精品| 欧美午夜久久久| 欧美激情国产精品| 国产在线一区二区三区四区| 亚洲精品偷拍| 亚洲国产精品va| 久久激情五月激情| 先锋影音一区二区三区| 欧美人与禽猛交乱配视频| 麻豆精品国产91久久久久久| 国产精品一区在线观看| 亚洲美女视频在线免费观看| 在线观看亚洲| 欧美在线视频免费| 欧美在线免费观看视频| 欧美日韩一二区| 91久久精品一区二区三区| 国内成人精品视频| 欧美呦呦网站| 久久久久久久波多野高潮日日| 国产精品福利网站| 一区二区福利| 亚洲午夜一级| 国产精品区二区三区日本| a91a精品视频在线观看| 亚洲人成小说网站色在线| 免费不卡在线观看| 欧美国产91| 亚洲激情欧美| 久久综合伊人77777| 欧美成人tv| 亚洲黄页视频免费观看| 美女久久一区| 亚洲黄色免费| 中文亚洲免费| 国产精品久久久99| 亚洲一区二区在线播放| 欧美一区二区三区免费看| 国产亚洲a∨片在线观看| 欧美亚洲色图校园春色| 久久尤物视频| 亚洲欧洲日本在线| 欧美人成在线视频| 亚洲自啪免费| 久久视频一区二区| 亚洲人成网站精品片在线观看 | 在线一区视频| 欧美一级夜夜爽| 国模大胆一区二区三区| 米奇777超碰欧美日韩亚洲| 亚洲肉体裸体xxxx137| 亚洲欧美日韩在线一区| 国产日韩精品一区二区三区| 久久高清免费观看| 亚洲人成毛片在线播放女女| 亚洲综合不卡| 韩国av一区二区三区| 欧美夫妇交换俱乐部在线观看| 99在线|亚洲一区二区| 久久精品91久久久久久再现| 亚洲第一黄网| 国产精品久久久久久久久搜平片| 欧美中文在线视频| 最近中文字幕日韩精品| 欧美一区二区三区四区视频| 在线观看欧美视频| 国产精品捆绑调教| 美女诱惑一区| 欧美一级电影久久| 亚洲免费观看| 欧美大片在线看| 小处雏高清一区二区三区| 亚洲电影第三页| 国产目拍亚洲精品99久久精品| 久久综合色一综合色88| 亚洲一区二区少妇| 亚洲欧洲另类国产综合| 久久天堂精品| 午夜精品在线| 宅男噜噜噜66一区二区| 精品成人a区在线观看| 国产精品系列在线播放| 欧美国产激情| 美国成人毛片| 欧美尤物一区| 亚洲免费影视第一页| 亚洲人成网站精品片在线观看 | 亚洲欧美综合另类中字| 亚洲日韩欧美视频| 精品999在线播放| 国产亚洲一区二区三区在线观看| 欧美午夜精品久久久久久孕妇 | 久久精品视频免费| 亚洲欧美999| 亚洲精品在线视频观看| 亚洲国产99精品国自产| 欧美xart系列在线观看| 久久免费国产| 久久先锋影音av| 久久综合福利| 久久亚洲影音av资源网| 久久亚洲欧美| 久久最新视频| 久久一区二区三区四区| 鲁鲁狠狠狠7777一区二区| 久久久爽爽爽美女图片| 久久免费黄色| 麻豆精品在线观看| 久久婷婷麻豆| 欧美v日韩v国产v| 欧美大片国产精品| 亚洲第一天堂无码专区| 亚洲第一页自拍| 亚洲精品欧美在线| 一本色道久久综合| 亚洲一品av免费观看| 亚洲综合精品| 欧美在线视频一区| 久久日韩粉嫩一区二区三区| 久久久综合视频| 欧美高清视频在线播放| 欧美日韩综合视频网址| 欧美亚韩一区| 国产主播一区二区三区| 亚洲第一狼人社区| 99av国产精品欲麻豆| 在线一区二区三区四区| 欧美一级久久| 蜜桃精品一区二区三区| 最新中文字幕一区二区三区| 亚洲少妇在线| 久久久国产成人精品| 欧美激情精品久久久久久久变态| 欧美日韩国产不卡| 国产欧美日韩亚州综合| 亚洲高清资源| 亚洲一区在线观看视频 | 久久综合狠狠综合久久综青草| 麻豆免费精品视频| 亚洲人体影院| 欧美一级大片在线观看| 欧美国产在线电影| 国产午夜精品麻豆| 亚洲美女视频在线观看| 欧美在线视频一区二区三区| 欧美激情乱人伦| 亚洲一区二区三| 免费在线视频一区| 国产日产精品一区二区三区四区的观看方式| 在线观看视频一区| 午夜精品在线看| 91久久精品国产91久久性色| 欧美在线1区| 欧美日韩伊人| 亚洲大片精品永久免费| 欧美一区日韩一区| 亚洲精品日韩久久| 久久综合色88| 国产资源精品在线观看| 亚洲天天影视|