div指令
1.除数:有8位和16位两种,在一个寄存器或者内存中。
2、被除数:默认放在AX或(DX和AX)中,如果除数为8位,被除数为16位,被除数默认在AX中存放,
如果除数为16位,被除数为32位,被 除数则在(DX和AX)中存放,DX存放高16位,AX存放低16位。
题目1
assume cs:code, ds:data
data segment
db 'a' ;8位
dw 100 ;16位
dd 100006 ;32位
data ends
code segment
start:
mov ax,data
mov ds, ax
mov ax,500
mov bx,0
div byte ptr[bx] ; 500/97 =5...15, al保存商, ah保存余数
;mov ax,86A1h ;设置被除数 100001 == 186A1h
;mov dx,1
;div word ptr[bx+1] ;执行后 ax保存商, dx保存余数
mov ax,word ptr[bx+3] ;设置被除数
mov dx,word ptr[bx+5]
div word ptr[bx+1] ;执行后 ax保存商, dx保存余数
mov ax,4c00h
int 21h
code ends
end start
题目2
1982年关于DEC公司的一条记录:
公司名称:DEC
总裁姓名:Ken Olsen
排 名:137
收 入:40
著名产品:PDP
1988年DEC公司的信息有了变化:
1.Ken Olsen 在富翁榜上的排名已升至38位;
2.DEC的收入增加了70亿美元;
3.该公司的著名产品已变为VAX系列计算机。
任务:编程修改内存中的过时数据。
c语言代码
struct company
{
char cn[30];
char rn[30];
int num;
int sr;
char cp[30];
}
struct company aa={"DEC", "Ken Olsen", 130, 40, "PDP"};
void main()
{
aa.num = 38;
aa.sr = 110;
aa.cp[0] = 'V';
aa.cp[1] = 'A';
aa.cp[2] = 'X';
}
汇编代码
assume cs:code, ds:data
data segment
db 'DEC','Ken Olsen'
dw 130,40
db 'PDP'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,12
mov word ptr[bx], 38
add word ptr[bx+2], 70
mov byte ptr[bx+4], 'V'
mov byte ptr[bx+5], 'A'
mov byte ptr[bx+6], 'X'
mov ax,4c00h
int 21h
code ends
end start