📄 express.asm
字号:
TITLE Unsigned Arithmetic Expressions (Express.asm)
INCLUDE Irvine16.inc
.data
msg1 BYTE "Unsigned overflow!",0dh,0ah,0
var1 DWORD 3
var2 DWORD 6
var3 DWORD 4
var4 DWORD ?
.code
main PROC
mov ax,@data
mov ds,ax
;Divide Overflow example:
mov ax,1000h
mov bl,0
div bl
jmp quit
;Example 1: var4 = (var1 + var2) * var3;
Example1:
mov eax,var1
add eax,var2
mul var3 ; EAX * var3
jc tooBig ; overflow?
mov var4,eax
jmp Example2
Example2: ; var4 = (var1 * 5) / (var2 - 3);
mov eax,var1
mov ebx,5
mul ebx ; EDX:EAX = product
mov ebx,var2
sub ebx,3
div ebx
mov var4,eax
Example3: ; var4 = (var1 * -5) / (-var2 % var3);
mov eax,var2 ; begin right side
neg eax
cdq ; sign-extend dividend
idiv var3 ; EDX = remainder
mov ebx,edx ; EBX = right side
mov eax,-5 ; begin left side
imul var1 ; EDX:EAX = left side
idiv ebx ; final division
mov var4,eax ; quotient
tooBig:
mov edx,OFFSET msg1
call WriteString
quit:
exit
main ENDP
END main
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -