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

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 閱讀(201) | 評論 (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 閱讀(308) | 評論 (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 閱讀(353) | 評論 (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 閱讀(580) | 評論 (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 閱讀(457) | 評論 (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 閱讀(592) | 評論 (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 閱讀(339) | 評論 (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 閱讀(480) | 評論 (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 閱讀(514) | 評論 (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 閱讀(353) | 評論 (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>
            小处雏高清一区二区三区| 激情久久五月| 亚洲欧美日韩在线播放| 日韩一级黄色大片| 日韩视频中文字幕| 亚洲午夜久久久| 欧美一区二区免费| 久久久亚洲欧洲日产国码αv| 久久精品中文字幕一区二区三区| 久久久久国产精品www| 美女黄毛**国产精品啪啪| 欧美精品尤物在线| 国产精品免费视频观看| 精品69视频一区二区三区 | 欧美日韩一区二区欧美激情| 欧美午夜免费影院| 国产一区二区黄色| 亚洲毛片在线观看.| 亚洲欧美一区二区三区久久 | 久久久久九九九九| 欧美精品 日韩| 国产欧美精品一区二区三区介绍| 国内久久婷婷综合| 日韩一级免费观看| 久久噜噜噜精品国产亚洲综合| 欧美激情第1页| 亚洲尤物视频在线| 欧美精品粉嫩高潮一区二区 | 欧美jizz19hd性欧美| 亚洲国产乱码最新视频| 亚洲国产精品免费| 午夜精品免费在线| 欧美极品一区二区三区| 国产综合自拍| 午夜精品久久久久久久99樱桃 | 国产区欧美区日韩区| 亚洲精品小视频在线观看| 久久久精品欧美丰满| 一区二区三区四区五区视频| 久久手机精品视频| 国产午夜亚洲精品不卡| 亚洲一区三区视频在线观看| 欧美激情aaaa| 久久久无码精品亚洲日韩按摩| 国产精品二区影院| 9色精品在线| 亚洲国产精品va在线看黑人| 久久精品国产综合精品| 国产视频在线一区二区| 午夜天堂精品久久久久| 在线成人激情视频| 久久精品一区二区三区不卡| 一本色道久久88精品综合| 欧美精彩视频一区二区三区| 亚洲电影免费在线观看| 久久久精品免费视频| 翔田千里一区二区| 国产日韩精品久久| 久久激情视频久久| 欧美一区二区| 国产一区二区三区四区三区四| 欧美亚洲综合久久| 午夜亚洲福利| 国产婷婷色一区二区三区在线| 亚洲中字在线| 亚洲一二三区在线| 国产免费观看久久黄| 久久精品免费电影| 久久九九免费视频| 亚洲国产老妈| 亚洲狼人综合| 国产精品欧美一区二区三区奶水| 亚洲欧美国产日韩中文字幕| 亚洲素人在线| 国产一区二区三区在线播放免费观看| 久久精品国产亚洲精品| 久久久久久69| 99精品免费网| 亚洲午夜一区| 狠狠做深爱婷婷久久综合一区| 玖玖玖国产精品| 欧美成人一品| 亚洲一区欧美激情| 欧美在线综合| 日韩亚洲欧美综合| 亚洲女性裸体视频| 亚洲第一偷拍| 宅男噜噜噜66一区二区| 国产一区二区久久精品| 亚洲成人在线视频播放| 欧美日韩另类一区| 久久大逼视频| 欧美精品不卡| 久久gogo国模裸体人体| 久久精品人人做人人综合| 99热这里只有成人精品国产| 亚洲图片你懂的| 樱花yy私人影院亚洲| 一本久久青青| 在线精品一区| 亚洲免费视频成人| 亚洲人线精品午夜| 欧美一区二区视频网站| 亚洲精品乱码久久久久久久久 | 久久人体大胆视频| 欧美日韩中文字幕在线| 老鸭窝91久久精品色噜噜导演| 久热精品在线视频| 欧美一级黄色网| 欧美va天堂在线| 久久精品最新地址| 亚洲午夜激情免费视频| 一区在线观看| 亚洲欧美日韩另类| 亚洲最新色图| 欧美不卡视频一区发布| 久久人人九九| 国产热re99久久6国产精品| 亚洲精品视频免费| 91久久久久| 久久天天狠狠| 巨乳诱惑日韩免费av| 国产欧美不卡| 亚洲伊人网站| 这里只有精品视频| 免费黄网站欧美| 你懂的国产精品| 黑人操亚洲美女惩罚| 亚洲欧美日韩国产精品| 亚洲一区在线直播| 欧美色视频一区| 日韩一区二区高清| 国产精品99久久久久久人| 欧美成人在线影院| 亚洲第一区在线观看| 伊人成人在线视频| 久久九九电影| 欧美福利视频在线| 91久久精品国产91久久性色| 久久久人成影片一区二区三区| 久久久久这里只有精品| 国产一区二区视频在线观看| 欧美一区二粉嫩精品国产一线天| 午夜精品在线观看| 国产精品成人在线| 亚洲欧美国产日韩中文字幕| 亚洲欧美日韩一区二区在线| 欧美色图一区二区三区| 一区二区高清视频| 先锋影音网一区二区| 国产日韩亚洲欧美综合| 久久精品理论片| 亚洲国产精品久久久久| 在线一区观看| 国产一区二区黄| 免费在线播放第一区高清av| 欧美成人精品不卡视频在线观看| 亚洲三级免费电影| 欧美午夜精品久久久久久久| 亚洲欧美综合v| 美女露胸一区二区三区| 日韩一区二区福利| 国产精品自拍网站| 老司机免费视频一区二区三区| 欧美激情免费观看| 亚洲新中文字幕| 国产一区在线视频| 欧美剧在线免费观看网站| 亚洲一区在线视频| 欧美国产欧美综合| 亚洲欧美中文日韩在线| 在线国产精品一区| 国产精品免费视频xxxx| 美女日韩欧美| 亚洲欧美日韩精品久久久| 欧美国产视频一区二区| 欧美亚洲一区二区在线| 91久久夜色精品国产九色| 国产精品乱人伦一区二区| 久久综合久久综合九色| 亚洲影视九九影院在线观看| 久久综合久久88| 一区二区三区你懂的| 久久久久久国产精品mv| av成人免费| 欧美福利视频在线| 欧美专区亚洲专区| 一区二区三区欧美亚洲| 在线精品观看| 国产一区二区久久| 国产精品久久久久久户外露出| 久热精品视频| 久久不见久久见免费视频1| 99国产精品久久| 亚洲福利小视频| 美女性感视频久久久| 欧美亚洲三区| 先锋影院在线亚洲| 亚洲一区二区三区激情| 亚洲日本中文|