李伯成《微机原理》课后习题答案 下载本文

-------------精选文档-----------------

ADD BX,2;

移动“和”存储区地址指针 暂停

LOOP MADD1; 循环控制 HLT;

ADD1 DB 0FEH,86H,7CH,44h,56H,1FH,24H,01H,02H,33H;加数1 ADD2 DB 56H,49H,4EH,0FH,9CH,22H,45H,11H,45H,21H; 加数2 SUM

DB 10 DUP (0); 和存储单元

CONT DB 5 ; 循环次数

3.4 某16位二进制数,放在DATA连续的两个单元中,试编程求其平方根和余数,将其分别存放在ANS和REMAIN中。

ORG 100h MOV MOV MUL CMP MOV

BL,2; CX,NUM;

BL;

除数初值 预计最大循环次数 0、1的平方根除外 大于原始数据么? 读数

AGAIN: MOV

AL,BL; AX,CX; AX,CX;

试除

得到2的平方

若原始数据小于4转EXIT

JG EXIT; DIV BL; INC BL; JMP DEC MOV MOV MUL SUB MOV HLT

除数递增

继续除

存商

去除除数自加

恢复余数

AGAIN; BL; ANS,BL; AL,BL; BL; CX,AX;

EXIT:

REMAIN,CL;

NUM ANS

DW 7; DB ?;

DB ?;

REMAIN

3.5 在DATA1之下顺序存放着以ASCII码表示的千位数,将其转换成二进制数。

可编辑

-------------精选文档-----------------

MOV

MOV MOV CLD XOR XOR AND CMP CMP JG SUB JMP

CL,4; 移位次数

CH,CL; 循环次数 SI,OFFSET ASCBIN AX,AX DX,DX AL,7FH AL,'0' AL,'9' ASCB2 AL,30H ASCB3

;大于‘9’又小于‘A’结束转换

;大于‘9’转ASCB2 ; 数字形式二进制数减30H ;不大于‘0’结束转换

ASCB1: LODSB

JL ERR

ASCB2: CMP AL,'A'

AL,'F' ERR

JL ERR CMP JG SUB ROL DEC JNZ ROL MOV NOP HLT

;大于‘F’为不合理数,结束转换

;字符形式ASCII数减37H

AL,37H DX,CL CH DX,CL

ASCB3: OR DL,AL

ASCB1

BIN,DX;存储转换结果

ERR:

ASCBIN DB '1','B,'4','3' BIN DW

?

3.7 编写程序将MOLT中的一个8位数乘以20,乘积放在ANS中(用3种方式)。

解:第一种方法:常规乘法运算

ORG 100h MOV MOV MUL MOV

AL,MOLT BL,20 BL ANS,AX

可编辑

-------------精选文档-----------------

HLT

MOLT DB 2 ANS

DW ?

第二种方法,将MOLT连加20次

ORG 100h

MOV MOV XOR CLC

LOOP ADD1 MOV HLT

ANS,AX CX,20 BX,MOLT AX,AX

ADD1:ADC AX,BX

MOLT DW 5 ANS

DW ?

第三种方法,将“20”连加MOLT次

ORG 100h

MOV MOV XOR CLC

LOOP ADD1 MOV HLT

ANS,AX CX,MOLT BX,20 AX,AX

ADD1:ADC AX,BX

MOLT DW 5 ANS

DW ?

3.8 元。

在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单

ORG 100h

可编辑

-------------精选文档-----------------

XOR LEA MOV INC CMP MOV

DL,DL DI,KVFF; CL,99;

DL中始终存目前最大值

SI;

比较次数为N-1次

NEXT0: LEA NEXT1: MOV

SI,BUFFER; AL,[SI];

DL,AL; DL,AL;

JNC NEXT2;

CL;

NEXT2: DEC

JNZ NEXT1; HLT

MOV [DI],DL; 最大值存储

BUFFER DB ;自行定义100个数据 KVFF DB

?

3.9 若将数据按大小顺序排序,试编写程序..

解:此处采用 “冒泡法”予以处理:

ORG 100h LEA DI,BUFFER; MOV MOV

BL,99; CL,BL;

SI,DI;

内循环次数

AL,[SI]; 读数

移动指针

比较

AL,[SI]; DL,[SI]; [SI-1],DL; [SI],AL; NEXT3;

不大于互换

内循环次数减一 BL; 外循环次数减一

数据区

外循环次数

NEXT0: NEXT3:

MOV MOV

INC SI; CMP MOV MOV MOV JNZ DEC

JNC NEXT5; 大于转NEXT5

NEXT5: DEC CL;

可编辑