From a3c54c48fe6c02a5510aa024d67123e7685c12f6 Mon Sep 17 00:00:00 2001 From: gfdgd_xi <3025613752@qq.com> Date: Sun, 5 Nov 2023 20:03:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=A9=E8=9B=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.sh | 12 +++++++ test-kvm.asm | 81 +++++++++++++++++++++++++++++++++++++++++++++++ test-kvm.asm.bin | Bin 512 -> 512 bytes test.qcow2 | Bin 0 -> 1024 bytes 4 files changed, 93 insertions(+) create mode 100755 build.sh create mode 100644 test.qcow2 diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..f651134 --- /dev/null +++ b/build.sh @@ -0,0 +1,12 @@ +#!/bin/bash +#cd `dirname $0` +bin=$1 +nasm -f bin $1 -o `basename $1`.bin +if [[ $? != 0 ]];then + exit +fi +sudo modprobe nbd 8 +sudo qemu-nbd `dirname $0`/test.qcow2 --connect /dev/nbd0 +sudo dd if=`basename $1`.bin of=/dev/nbd0 +sudo qemu-nbd -d /dev/nbd0 +kvm --hda `dirname $0`/test.qcow2 -rtc base=localtime diff --git a/test-kvm.asm b/test-kvm.asm index 563978e..a5ef235 100644 --- a/test-kvm.asm +++ b/test-kvm.asm @@ -74,6 +74,87 @@ showTailText: mov al,[ds:si] mov byte [es:di],al loop showTailTextLoop + + +get_data: + mov di,80*2*25-2 + + ; 读取秒 + mov al,0x00 + call read_time + mov byte [es:di-4],':' + mov byte [es:di-2],ah + mov byte [es:di],al + ; 读取分钟 + mov al,0x02 + call read_time + mov byte [es:di-10],':' + mov byte [es:di-8],ah + mov byte [es:di-6],al + ; 读取小时 + mov al,0x04 + call read_time + mov byte [es:di-14],ah + mov byte [es:di-12],al + ; 读取日 + mov al,0x07 + call read_time + mov byte [es:di-22],'.' + mov byte [es:di-20],ah + mov byte [es:di-18],al + ; 读取月 + mov al,0x08 + call read_time + mov byte [es:di-28],'.' + mov byte [es:di-26],ah + mov byte [es:di-24],al + ; 读取年 + mov al,0x09 + call read_time + mov byte [es:di-32],ah + mov byte [es:di-30],al + mov cx,showTipsStr-tipsStr + sub di,30 + mov ax,tipsStr + mov ds,ax + ; 先跳过文本显示 + jmp near showTipsStrEnd + ; 显示提示文本 + tipsStr: db 'Time:20' + showTipsStr: + mov di,cx + add di,showTipsStr+0x7c0 + mov dl,[ds:di] + mov di,80*2*25-36 + sub di,cx + mov byte [es:di],dl + loop showTipsStr + showTipsStrEnd: + +jmp near get_data + + +read_time: + out 0x70,al + in al,0x71 + call bcd_to_ascii + ret + +; 用于编码转换:BCD=》ASCII +; 输入:AL=bcd码 +; 输出:AX=ascii +bcd_to_ascii: + mov ah,al + and al,0x0f + add al,0x30 + + shr ah,4 + and ah,0x0f + add ah,0x30 + ret + + + poweroff: ; 跳过关机 diff --git a/test-kvm.asm.bin b/test-kvm.asm.bin index 9e528e26cbb67119bb57c02560c16419f751ca43..16207645af869120a079324615f8d9921891e1a2 100644 GIT binary patch delta 181 zcmZo*X<(VKrGEcB{tXN-+8NZ2x&E<I>qz~l*1@`g=|vex;2TKbhgyg0uMI3OQW$`o zPe9I>4eT$%LDH}EfFf^zBJVbEyl@4HJOPP31B$%Z!1=-$q~QUO^JphKL-TvN9cqky zH(p9Hgk<KXS{WI1o^L$<mP5m?OLTt?zvg+h4$((%Ul#s<R`8_o1tY`Zjw34kECvVO Turxg3Z#ZIbc;c4DOrfg)aIjHj delta 21 bcmZo*X<(VKWpXs*;>it+bwI4i6uJrkR~HAb diff --git a/test.qcow2 b/test.qcow2 new file mode 100644 index 0000000000000000000000000000000000000000..a6c28b68376b62994c54eb783191f08a9a231f67 GIT binary patch literal 1024 zcmdnNu%qw5&I|0F=NbR29b;u^KF$cF_#eGjJI2Pqz_4>Z!+r*a&htRA4-f^9J^=-Q z!ky<Ek2COt#6eo2Y=%cKUh*(_q~_%0D}?74<)kR?<YCxxfW7ZV=P8h~eIX3ZuNWDx z*>$m~b+A5q^-_?*$iT>;&M&`QAw4Z6Jw>4+bEhD(4v@k78c}pT+dq$g1H+4U2DM|Z zf2`CxQvU(X+Q9Up3?%RkB=AG6!}Zq&mKP}uK+Y#1=gS867vUi3S9(B^H$ahh8#rFL zf<&HxM4kafUToleVGPpn0LXc?lbxaYz1$8p#=aXbr5Hjob5pI13_yN<%VF0gy1#~B z^SoMz=%cqU3;#bWcvAR+k>PO15fy$Gg9C3^8lLbs95FcjlAB=%d+=^XhMmj|XGMX5 RIru>6s=?=`Q5VrO1OPaWoaF!j literal 0 HcmV?d00001