微机原理及接口技术(习题答案) 下载本文

内容发布更新时间 : 2024/5/9 7:10:38星期一 下面是文章的全部内容请认真阅读。

POP CX POP DX

之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。

解答: SS=1000H

SP=1FFEH CX=2115H DX=5678H 栈中各单元内容如下所示:

地址 RAM 11FFAH 2115 11FFCH 5678 11FFEH 1234 12000H

第4章 宏汇编语言

习题与思考题

1.画出以下变量在内存中存储的示意图。 D1 DB ‘A’,’123’,09H, 45 D2 DW ‘A’,’CD’,23H, 4567H D3 DD 1234H, 23456789H

2.设计子程序分别完成以下功能:

1)根据给定的参数值,判断该参数是偶数还是奇数。 2)把给定参数值的高、低数据位互换。

3.设计相应的宏完成以下功能: 1)把给定的参数按二进制显示。

2)求两个参数的和,并按十进制形式显示。 6

范文范例 学习指导

第5章 汇编语言程序设计

习题与思考题

1. 设数据段中有字节型单元NUMBER和FLAG,判断NUMBER与给定的X和Y的大小关系(XY,则置FLAG=1,若NUMBER

解答:.486 Data segment NUMBER db ? FLAG db ? Data ends Code segment

Assume cs: Code, ds: Data Beg: mov ax,data Mov ds,ax

mov al, X Mov bl, Y Cmp NUMBER, X Jnc P1

Mov FLAG, 0FFH Jmp exit

P1: cmp NUMBER, Y Ja P2

Mov FLAG, 00H Jmp exit

P2: mov FLAG, 01H Exit: mov ah, 4ch Int 21h Code ends End Beg

2. 计算1+2+3+…+100,并把和保存在SUM单元中。 .486

DATA SEGMENT USE16

TT DB 1 SUM DW ? DATA ENDS

CODE SEGMENT USE16

word完美整理版

ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATA MOV DS, AX MOV CX, 100 MOV AX, 0 START: ADD AX, TT INC TT

LOOP START MOV SUM, AX MOV AH, 4CH MOV 21H

CODE ENDS

END BEG

3. 对一个给定的N数据,用冒泡排序法进行排序。 解答:.486

Data segment

Buf db ‘abcd18437hj’ Lens equ $-buf Count db lens Flag db ? Data ends Code segment

Assume cs: code, ds: data Beg: mov ax, data Mov ds, ax Again: dec count Jz done Mov flag, 0 Mov cx, count

Mov si, offset buf Last: mov al, [si] Mov ah, [si+1] Cmp ah, al Jnc next

Mov [si], ah Mv [si+1], al Mov flag, 1 Next: inc si 8

范文范例 学习指导

Loop last Cmp flag, 1 Je again

Done: mov buf+lens, ‘$’ Mov ah, 9

Mov dx, offset buf Int 21h Mov ah, 4ch Int 21h Code ends End Beg

4. 由键盘输入任意的两个十进制数,然后转换成对应的压缩BCD码的形式在屏幕上显示。

.486

DATA SEGMENT USE16 BCD DB ? BUF DB 3

DB ?

DB 3DUP(?)

MESG1 DB ‘PLEASE INPUT :’,0DH,OAH,’$’

MESG2 DB ‘ERROR! NUMBER IS FROM 0 TO 9. PLEASE AGAIN!$’ DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA BEG: MOV AX , DATA MOV DS, AX

L1: MOV DX, OFFSET MESG1

MOV AH, 9 ;显示MESG1

INT 21H MOV AH, 0AH

MOV DX, OFFSET BUF

INT 21H ;输入字符串 MOV AL, BUF+2 CMP AL, 30H JC ERROR CMP AL, 3AH

JC NEXT ;判断第一个数输入是否符合要求

ERROR: MOV DX, OFFSET MESG2

word完美整理版

MOV AH, 9

INT 21H

JMP L1 ;输入错误提示重新输入 NEXT: SUB AL, 30H

SAL AL, 4 ;求出十位数字 MOV BCD, AL MOV AL, BUF+3 CMP AL, 30H

JC ERROR

CMP AL, 3AH

JNC ERROR ;判断第二个数输入是否符合要求

SUB AL, 30H OR BCD, AL MOV AH, 4CH

INT 21H

CODE ENDS

END BEG

5. 由键盘输入两个十六进制数,转换成等值的十进制数后在屏幕上显示。

CMPDISP MACRO NN ;用宏语句完成比较法二进制到十进制转换 LOCAL LAST,NEXT

MOV DL, 0 LAST: CMP NUM, NN JC NEXT

INC DL

SUB NUM, NN JMP LAST

NEXT: ADD DL, 30H MOV AH, 2 INT 21H ENDM

DATA SEGMENT USE16

NUM DB ? BUF DB 3

DB ?

DB 3DUP(?)

DATA ENDS

CODE SEGMENT USE16

ASSUME CS:CODE,DS:DATA 10