MASM中的双字划分

时间:2014-01-18 04:38:15

标签: division masm 16-bit instruction-set

 HDIVIDEND DW 1234H
 LDIVIDEND DW 5678H
 DIVISOR DW 1234H

MOV AX,LDIVIDEND
MOV DX,HDIVIDEND
DIV DIVISOR

我正在接受非法指导"在指令

上运行masm代码
 DIV DIVISOR

其中HDIVIDEND是16位的高阶红利。除数是16位。

1 个答案:

答案 0 :(得分:1)

是的,您编写的程序应该已正确组装。也许你在文件的另一部分犯了一个错误,这将是你“非法指令”的原因。或许您应该下载更新版本的MASM,因为它可能暂时出现故障。无论如何,这是工作代码,与MASM64 for Windows组装和链接(仍应使用MASM32):

dseg            segment         para 'DATA'
hdividend       dw              1234h
ldividend       dw              5678h
divisor         dw              1234h
dseg            ends

cseg            segment         para 'CODE'
start           proc
                mov             ax,             ldividend
                mov             dx,             hdividend
                div             divisor
start           endp
cseg            ends
                end

输出:

C:\Masm64>bin\ml64.exe /c division.asm

Microsoft (R) Macro Assembler (x64) Version 8.00.50727.215
Copyright (C) Microsoft Corporation.  All rights reserved.

Assembling: division.asm

C:\Masm64>bin\link.exe /subsystem:windows /entry:start division.obj
Microsoft (R) Incremental Linker Version 8.00.50727.215
Copyright (C) Microsoft Corporation.  All rights reserved.

希望这有帮助。