微机原理及应用(陈继红、徐晨)课后习题答案 下载本文

内容发布更新时间 : 2024/12/22 23:45:44星期一 下面是文章的全部内容请认真阅读。

DS:0123H

DS:0111H

DS:0124H

DS:0112H

DS:0125H

32H 31H 64H 00H 33H 03H 78H 00H 64H 00H

4.10 若自

STRING单元开始存放有一个字符串(以字符 ‘$’结束),试完成:

(1)编程统计该字符串长度(不包含 $字符,并假设长度为两字节)。 (2)把字符串长度放在

STRING 单元,把整个字符串往下移两个单元。 11

微机原理及应用(陈继红、徐晨)课后习题答案

程序段为: (1)

MOV SI, OFFSET STRING XOR BX, BX

CONT:MOV AL, [SI] CMP AL, ‘$’ JZ NEXT INC BX INC SI JMP CONT

NEXT:MOV AH, 4CH INT 21H

(2)STRING DB ‘ $’ COUNT EQU $-STRING MOV SI, OFFSET STRING MOV CX, COUNT ADD SI, CX CONT: DEC SI MOV AL, [SI] MOV [SI+2], AL LOOP CONT

MOV CX, COUNT MOV STRING, CX MOV AH, 4CH INT 21H

4.11 将字符串

STRING中的‘&’字符用空格代替,字符串 STRING“It is FEB&03”。 解答程序为: DATA SEGMENT

STRING DB ‘It is FEB&03’ COUNT EQU $-STRING DATA ENDS

CODE SEGMENT

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

MOV DS,AX

MOV SI,OFFSET STRING

MOV CX,COUNT MOV AL,‘$’

CONT:CMP AL,[SI] JNZ NEXT

MOV BYTE PTR[SI],‘ ’

NEXT: INC SI

LOOP CONT MOV AH,4CH INT 21H

CODE ENDS END START

4.12 设 BLOCK起有

20个单字节的数,试将它们按降序排列。 解答程序为: DATA SEGMENT ORG 0100H

BLOCK DB 12H,87H,51H,68H,00H,02H,0FFH,0D6H,45H,77H,80H,9FH LEN EQU $-BLOCK 12

微机原理及应用(陈继红、徐晨)课后习题答案

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX

MOV BX,LEN-1 ;BX比较轮数 LOP0: MOV SI,LEN-1 ;SI第 N个数在数据表中的偏移量 MOV CX,BX ;CX比较次数计数值 MOV DX,0 ;DX置交换标志为第 N个数在数据表中偏移量 LOP1: MOV AL,BLOCK[SI]

CMP AL,BLOCK[SI-1] ;比较相邻两数 JLE NEXT

MOV AH,BLOCK[SI-1] ;交换两数 MOV BLOCK[SI-1],AL MOV BLOCK[SI],AH

MOV DX,1 ;DX发生交换处的位置

NEXT: DEC SI ;修改数据地址

LOOP LOP1 ;一轮比较完吗?

CMP DX,0 ;本轮发生交换吗?

JZ STOP ;已全部排好序 ,转程序结束

DEC BX ;所有轮都比较完否?

JNZ LOP0 ;未完继续

STOP: MOV AH,4CH

INT 21H

CODE ENDS

END START

4.14试编写一个汇编语言程序

,要求对键盘输入的小写字母用大写字母显示出来。 解答程序为: data segment

message db 'please enter the small letter:',0ah,0dh,'$' message2 db 'the capital letter is:',0ah,0dh,'$'

error db 'enter must be small!please enter again:',0ah,0dh,'$' message3 db 'the capital letter is:','$' letter db ? data ends stack segment db 100h dup(?) stack ends code segment

assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax jmp l1 xor ax,ax

error1:lea dx,error mov ah,09h int 21h

l1:lea dx,message mov ah,09h int 21h lea dx,letter mov ah,01h int 21h push ax 13