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