8086汇编习题笔记

1.若自STRING单元开始存放有一个字符串(以字符‘$’结束),请实现以下任务:

⑴ 编程统计该字符串长度(不包含字符‘$’,并假设长度为两字节)。

⑵ 把字符串长度放在STRING单元,把整个字符串往下移两个单元。

(1)

 1 DATA SEGMENT
 2     STRING DB 'HELLO ASM$'
 3 DATA ENDS
 4 CODE SEGMENT 
 5     ASSUME CS:CODE,DS:DATA;不然会导致无效操作 
 6    ;LEN AX,STRING;为什么不行
 7    ;MOV AX   , OFFSET STRING 为毛也不行
 8    LEA SI, STRING
 9    ;这里如何获取内存的物理地址里的值
10    ;SI里保存偏移地址,为区分寄存器寻址需要使用中括号[],使用SI,DI,BX时候默认的段基地址为DS,使用BP(堆栈)时候,段基地址为SS
11 AGAIN:
12    MOV AL, [SI] ;这里AL里存放的是数值,不是地址,下一个字符只需要inc si即可       
13    INC SI
14    CMP AL,'$'
15    JNZ ACTION
16    JZ OUTPUT
17 ACTION:
18     INC DL
19     JMP AGAIN
20 OUTPUT: 
21     ;注意不能直接输出,记得先转ascll码
22     ADD DL,30H
23     MOV AH,02H
24     INT 21H
25 CODE ENDS

初始寄存器值:结束后:

猜你喜欢

转载自www.cnblogs.com/scrazy/p/9000421.html