汇编语言6

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

posted @ 2015-05-29 17:58  鑫鑫1  阅读(237)  评论(0编辑  收藏  举报