相关疑难解决方法(0)

如何在屏幕上显示一个数字,并使用DOS x86程序集睡眠一秒钟?

我正在使用NASM 16 BITS.我正在尝试做一个简单的汇编代码,打印0到255之间的数字,每个数字之间间隔1秒.这是我到目前为止:

[bits 16]

mov ax,cs
mov ds,ax
mov cx,255
mov ax,0

myloop:
    ;print in screen ax value
    ;wait 1 second
    inc ax

loop myloop
Run Code Online (Sandbox Code Playgroud)

我不确定如何在屏幕上打印ax的值,以及如何等待1秒(将它们放在代码中的注释中).

x86 assembly dos bios nasm

5
推荐指数
1
解决办法
2760
查看次数

CPU如何处理睡眠功能?

当执行 sleep(10) 或等效语句时 CPU 会做什么。当CPU也进行上下文切换时,它如何准确地等待60秒,使该进程进入等待状态。

cpu sleep system

5
推荐指数
1
解决办法
2239
查看次数

如何在裸机16位x86组件中睡觉?

无论CPU的时钟速度如何,我都希望暂停执行大约0.1秒.代码应该直接从引导设备运行,因此不应该使用DOS中断.

我正在使用int 15h,但这似乎与我用PIT的通道2进行调制的嘟嘟声相冲突.我听说过频道0,但我不清楚如何设置它.

准确性并不重要,但它应该以相同的速度在旧的和现代的计算机上运行.因此,循环指令不是一种选择.

哔声代码和睡眠只是一堆用于改变频率和打开和关闭扬声器的宏.如果我之前打电话给睡觉,嘟嘟似乎不会停止beepoff.

以下是蜂鸣声宏:

%macro beepinit 0
    mov al, 182
    out 43h, al
%endmacro

%macro beepfreq 0
    out 42h, al
    mov al, ah
    out 42h, al
%endmacro

%macro beepon 0
    in al, 61h
    or al, 00000011b
    out 61h, al
%endmacro

%macro beepoff 0
    in al, 61h
    and al, 11111100b
    out 61h, al
%endmacro
Run Code Online (Sandbox Code Playgroud)

和睡眠一:

%macro sleep 2
    push dx
    mov ah, 86h
    mov cx, %1
    mov dx, %2
    int 15h
    pop dx
%endmacro
Run Code Online (Sandbox Code Playgroud)

我正在使用NASM汇编程序. …

assembly sleep 16-bit

5
推荐指数
1
解决办法
1122
查看次数

标签 统计

assembly ×2

sleep ×2

16-bit ×1

bios ×1

cpu ×1

dos ×1

nasm ×1

system ×1

x86 ×1