我写了改变文本颜色的部分,但我找不到改变背景颜色的方法,这段代码用于tasm汇编:
model small
stack 256
.data
ent db 0ah,0dh,'$'
array db 2,4,5,6
db 7,8,9,5
db 1,2,3,4
db 5,6,7,8
temp dw 0
.code
main :
mov ax,@data
mov ds,ax
mov ah, 06h
mov al, 0
mov cx, 0
mov dh, 79
mov dl, 79
mov bh, 4h
int 10h
Run Code Online (Sandbox Code Playgroud)
这是我的代码,但它不起作用:
mov ah, 0bh
mov bh, 01h
mov bl, 2h
int 10h
mov ah, 02h
mov dl, 34h
int 21h
mov ax,4c00h ; exit from program
int 21h
end main
Run Code Online (Sandbox Code Playgroud) 我有一个很大的问题fdiv
!!!! 我试图划分1/3
所以这就是我所做的
.model small
.stack 100h
.data
var1 dd 1
var2 dd 3
var3 dd 2
resultado dt 0.0
.code
mov ax,@data
mov ds,ax
finit
fild var1
fild var2
fdiv
fstp resultado
ffree
.exit
Run Code Online (Sandbox Code Playgroud)
你可以看到我将结果移动到resultado
因为我看不到结果st(0)
(我正在使用tasm所以我只能在调试器中看到变量)结果应该是3EAAAA3A
但我得到了40400000
...那就是3
!!! 这怎么可能??我试过交换变量而没有!你能帮助我吗??=(
我使用的是IBM处理器,而且我才刚刚开始深入研究x86汇编。现在我已经通读了一本汇编书籍,我决定测试一个简单的程序(在屏幕上打印一个感叹号的程序):
.MODEL SMALL
.CODE
MOV AH,2h
MOV DL,21h
INT 21h
INT 20h
END
Run Code Online (Sandbox Code Playgroud)
现在,在名为Peter Norton's Assembly Language Book for the IBM PC的书中有一个类似的例子,它是这样的:
.MODEL SMALL
.CODE
MOV AH,2h
MOV DL,2Ah
INT 21h
INT 20h
END
Run Code Online (Sandbox Code Playgroud)
我假设这个程序会根据 ASCII 表打印一个星号,但我无法测试,因为我不知道如何处理 TASM,因为我几乎没有将它安装在包含英特尔处理器的戴尔 Inspiron 上(这应该意味着IBM 系统)。在 TASM 的命令提示符下,我最终输入了以下代码行,以便组装我称为 EXCLAMAT.asm 的程序并运行它:
C:\TASM>TASM EXCLAMAT.asm;
C:\TASM>TLINK EXCLAMAT;
C:\TASM>TD EXCLAMAT.exe
Run Code Online (Sandbox Code Playgroud)
当我运行这个程序时,一个对话框告诉我:“程序没有符号表”
我做错了什么?非常感谢!
帮我修改我的程序.程序必须在目录中显示隐藏文件,但它不起作用.当cx = 2时,程序还会显示未隐藏的文件:
.model tiny
.code
org 100h ; ???-file
start:
push cs ;cs=ds
pop ds
mov ah, 9 ;show message on screen
lea dx, msgpathrequest
int 21h
mov ah, 0Ah ;write directory by keyboard
lea dx, path
int 21h
lea dx, pathstring
push dx
add dl, byte ptr[pathactual]
xor al, al
adc dh,al
mov di, dx
mov byte ptr[di], al
mov ah, 3Bh ;change directory
pop dx
int 21h
jc no_such_directory
mov ah,1ah
mov dx,offset dta
int 21h
;find …
Run Code Online (Sandbox Code Playgroud) 在试图为提供一个完整的工作(调试)例如这个问题,我无法理解的汇编代码.我有点生锈与旧的DOS + TASM组合.
这是我的asm代码(print.asm
):
.MODEL SMALL
.STACK 64
.DATA
string DB 'Something'
len equ $-string
.CODE
Entry:
mov ax, @data ;make DS point to our DATA segment
mov ds, ax
xor bx, bx
mov si, offset string
Char:
mov al, byte[si + bx]
mov ah, 2
mov dl, al
int 21h
inc bx
cmp bx, len
jnz Char
Fin:
mov ax, 4c00h
int 21h
END Entry
Run Code Online (Sandbox Code Playgroud)
我聚在一起
tasm print.asm
tlink print.obj
Run Code Online (Sandbox Code Playgroud)
导致16位可执行文件print.exe
.
在测试时,我很惊讶地看到程序输出
omething …
Run Code Online (Sandbox Code Playgroud) 我正在开发汇编项目(使用 tasm),并且在跳跃时遇到了一个非常奇怪的问题,我得到的错误是:相对跳转超出范围(数字)字节,据我了解,当您尝试跳转时对于太多行,这里是(我认为)相关代码:
IDEAL
MODEL small
STACK 100h
proc keyUsagePaint
mov bx,[playerSize]
mov ah,[byte ptr keyHolder]
push [playerX]
pop [tempX]
push [playerY]
pop [tempY]
;Checking the key and jumping accordingly.
keyUsageForPaint:
cmp ah,77
je moveRight
cmp ah,72
je moveUp
cmp ah,75
je moveLeft
cmp ah,80
je moveDown
cmp ah,26
je decBrushSize
cmp ah,27
je incBrushSize
cmp ah,2
je changeColor
cmp ah,3
je changeColor
cmp ah,4
je changeColor
cmp ah,5
je changeColor
cmp ah,6
je changeColor
cmp ah,7
je changeColor
cmp ah,8 …
Run Code Online (Sandbox Code Playgroud) 这段代码是使用Turbo Assembler汇编的,但是当我尝试在DOSBox中运行它时,它冻结并且DOSBox消失。这有什么问题吗?
TITLE SAMPLE PROGRAM
.MODEL SMALL
.STACK 64
.DATA
.CODE
MYCODE PROC
MOV AX,04
MOV BX,0212
CMP AX, BX
JG action1
JLE action2
action1:
ADD AL, 30
JMP exit
action2:
ADD BL, 20
JMP exit
exit:
MOV AX, 4CH
INT 21H
MYCODE ENDP
END MYCODE
Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些来自 TASM 的基本 YASM,这行代码会出错:
mov [var], 7
Run Code Online (Sandbox Code Playgroud)
我已经定义,像这样的变量:var db 5
。
即使在尝试这样做var: db 5
之后仍然出错并说:
错误:操作数 1 的大小无效
我想得到 2 个不同的东西:
(1)(bp 处的值)加16(数学加法)类似于:mov ax, [bp] + 16
(2)bp+16 的值(地址 bp+16)
为了得到(1)我试过:
mov ax, bp+16
Run Code Online (Sandbox Code Playgroud)
但它给出了一个错误。
对于(2)我试过:
mov ax, [bp+16]
Run Code Online (Sandbox Code Playgroud)
哪个有效。(我希望我做对了)。
为什么汇编看不懂评价:
mov ax, bp+16
Run Code Online (Sandbox Code Playgroud)
但是可以理解:
mov ax, [bp+16]
Run Code Online (Sandbox Code Playgroud)
因为加法不是使用+
符号定义的,那么幕后发生了什么?