;100001 devided by 376 ;by:double; data:2009-09-17; ver:0.1 assume cs:codesg,ds:datasg datasg segment dd 100001 datasg ends codesg segment start: mov ax,datasg mov ds,ax mov ax,ds:[0] ;in memory, 100001 is stored as A1860100, high address is in behind, ;in our habit it reads 00 01 86 A1. DX stores high address, and ax ; stores low address, so mov ax ds:[0] and then mov dx,ds:[2]. ;Another trap is that in assembler "[idata]" is recognized as "idata", but when ;debugging, "[idata]" is recognized as EA, so in assembler segment address ; must be added. Or we can mov bx,idata and express in [bx]. mov dx,ds:[2] mov bx,376 div bx mov ax,4c00h int 21h codesg ends end start