我对装配很新.我总是对数字感到困惑有人可以帮助我吗?我正在使用TASM ...所以8066汇编器有什么好的参考我可以使用吗?
SCREEN_CLEARER:
mov ax,1720h
mov cx,2000
mov bx,0
L2:
mov es:[bx],ax
add bx,2
loop L2
ret
Run Code Online (Sandbox Code Playgroud)
我真的不知道1720h,2000是什么.我也不太清楚如何阅读移动es:[bx],ax
非常感谢你
我计划将X变量转换为十进制.我很难使用turbo汇编程序,你能帮忙吗?
code segment ;inicio de un segmento unico
assume cs:code,ds:code,ss:code
org 100h ;localidad de inicio del contador
main proc ;procedimiento principal
mov ax,cs
mov ds,ax ; INICIO
mov ax, x
mov ah,4ch ;comienzo del fin de programa
int 21h ;fin del programa
main endp
x dw 0A92FH
code ends ; fin del segmento de codigo
end main ;fin del ensamble
Run Code Online (Sandbox Code Playgroud)
非常感谢
我一直坚持这个问题一天,没有找到任何相关的信息..
在我的代码中有一个部分需要一个数字(例如259)并将它的数字分成数组插槽.
SEPERATE_DIGITS:
mov ax,RESULT ; result is the number im working on. RESULT dw 259h
mov si,0
SEPERATE_DIGITS_LOOP:
div TEN ; TEN dw 10h
add dl,30h ; fix-up to print later on
mov SEPERATED[si],dl ; store separated digit in my array.
inc si
cmp ax,0
jne SEPERATE_DIGITS_LOOP
Run Code Online (Sandbox Code Playgroud)
我一直在turbo调试器上调试..第一部分工作正常.(25转到ax,9转到dx)..下一个分区,IP转到ape并且只是跳转到命令"db FE"并且一次又一次地在无限循环中.
我到底做错了什么?问:
我是汇编新手,现在我试图弄清楚dw
、和 中的db
、 和?
意味着什么struc
。
例如这里:
struc segment_descriptor
seg_length0_15 dw ?
base_addr0_15 dw ?
base_addr16_23 db ?
flags db ?
access db ?
base_addr24_31 db ?
ends segment_descriptor
Run Code Online (Sandbox Code Playgroud) 我的TASM已安装到我的TASM,TLINK和文件所在的文件夹中.具体来说就是C:/TASM/BIN
.运行单个.asm文件时没有问题但是当我包含另一个文件以便我的代码看起来模块化时,会出现这个问题.
我已经包含了6个文件,其中包括printMzpos1.kt
.(文件扩展名在汇编文件包含中无关紧要.)我的主文件名是c.asm
.该图像显示printMzpos1.kt
在我的TASM挂载的文件夹中:
这是我的代码的快照.我包括printMzpos1.kt
之后main endp
和之前end main
.printMzpos1.kt
包含打印框的过程.
.model small
.386
.stack 64
.data
colorW db 0Fh
xPos dw ?
currmode db ?
horLineLen dw 120
verLineLen dw 70
include macro.kt
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
MAIN proc far
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
mov ax, @data
mov ds, ax
mov es, ax
setVidMode
cls
call printMzPos1
;call move3Boxes
retVidMode
mov ax, 4c00h
int 21h
MAIN endp
include printMzPos1.kt
include printMzPos2.kt
include printMzPos3.kt
include …
Run Code Online (Sandbox Code Playgroud)
我一直在做一个程序,我需要将寄存器的值与某个数字进行比较.虽然在emu8086上模拟我没有任何问题,但是TASM编译器在所有行上都给出了错误:
cmp bx, 0xF7F0h
Run Code Online (Sandbox Code Playgroud)
错误如下所示:
***Error*** div.ASM(163) Illegal number
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
当然我可以将F7F0h
值放入另一个寄存器或变量中,但我更喜欢将它保持为常量值.
我有abc
使用循环语法打印的ASM代码。这是我的代码
;abc.com
.model small
.code
org 100h
start:
mov ah, 02h
mov dl, 'a'
mov cx, 3h
ulang:
int 21h
inc dl
loop ulang
int 20h
end start
Run Code Online (Sandbox Code Playgroud)
问题是,为什么要NOP
在之后INT 21
而不是INC dl
?据我所知它应该INC dl
那么LOOP xxxx
三次,然后INT 20
。
当我-t
连续按下时,它会一直到不知道的地方直到崩溃,这意味着找不到INT 20h
它显示INC dl
并LOOP 0107
指示循环。
仅供参考:
我是集会的初学者,任何帮助将不胜感激.这是我的代码:
.MODEL SMALL
.DATA
Textstring db "I'm a string$"
.CODE
START:
mov dx, Textstring
push dx
getche:
mov ah, 06h
int 21h
push al
END START
Run Code Online (Sandbox Code Playgroud)
我一直得到操作数类型在第8行上不匹配的错误,操作或指令的参数在第13行上有非法大小.
我猜测问题是我试图推进AL
堆栈.无论如何我可以把内容推AL
到堆栈上吗?我正在尝试创建一个代码,我提示用户输入一个字符并将该字符返回给调用它的程序.
我正在使用TASM汇编程序,我似乎找不到保存命令行参数甚至输出它们的方法.我试图做int 21h
而dx=0081h
和ah=09h
.它没有做任何事情,虽然我已经读到它是这样做的方式.
我添加了我认为应该复制的代码并显示我输入的参数:
mov dx, 81h
mov ah, 09h
int 21h
Run Code Online (Sandbox Code Playgroud) 我目前正在熟悉 Turbo Assembler 2.0 的可能性;我很高兴发现浮点常量可以指定如下。
SomeVariable dd 72.0; corresponds to 042900000h
Run Code Online (Sandbox Code Playgroud)
我假设可以在汇编时评估表达式,例如
SomeVariable dd 1.0 / 4.0; does not assemble
Run Code Online (Sandbox Code Playgroud)
但这似乎是不可能的。即使是在汇编时从相对简单的表达式中生成常量是否确实不可能?