正在加载图片...
STARTUP MOV CX. N LEA SI STRING EA DI. NEWSTR REPEAT MOV AL, [SI] IF(AL>='a’)&&(AL<=’z’) SUB AL. 32 ENDIF MOV [DI], AL INC SI INC DI NTILCXZ EXIT END 【问题】写出程序功能,程序执行后,从 NEWSTR开始的N个字节中的内容是什么? 1.【程序一】 【问题一】内存分配图 【问题二】 变量 EA 程序功能是将从BUF开始的连续4个字符1234 转变为4个对应的数值按逆序存放到以变量BCD为F|3|0 首地址的存储单元中。程序执行后,从BCD开始的N 个字节单元中的内容是4321。 32H 【问题三】 33H 用指令“ AND AL, OFH”代替指令“ SUBAL30H 程序功能不变 BCD 【问题四】如果将代码段中的指令 LEA DI,BCD+N-1 改成 LEA DI,BCD; DEC DI改成 INC DI,其它指令不 变,程序执行后,从BCD开始的N个字节单元中的内容 是1234 【问题五】取消数据段的BCD存储区,将经处理后的数据放回原处,修改程序如下 DATA SEGMENT 变量 BUF DB ' 1234' BUF N=S-BUF 31H DATA ENDS CODE SEGMENT 33H 2 ASSUME CS: CODE DS: DATA START: MOV AX. DATA BCD MOV DS.AX LEA SIBUF MOV CXN LOOP1:MOⅴAL[SI 6 SUB AL, 30H.STARTUP MOV CX,N LEA SI,STRING LEA DI,NEWSTR .REPEAT MOV AL,[SI] .IF (AL >= 'a') && (AL <= 'z') SUB AL,32 .ENDIF MOV [DI],AL INC SI INC DI .UNTILCXZ .EXIT END 【问题】写出程序功能,程序执行后,从 NEWSTR 开始的 N 个字节中的内容是什么? 解: 1.【程序一】 【问题一】内存分配图 【问题二】 程序功能是将从 BUF 开始的连续 4 个字符'1234' 转变为 4 个对应的数值,按逆序存放到以变量 BCD 为 首地址的存储单元中。程序执行后,从 BCD 开始的 N 个字节单元中的内容是 4 3 2 1。 【问题三】 用指令“AND AL,0FH”代替指令“SUB AL,30H”, 程序功能不变。 【问题四】如果将代码段中的指令 LEA DI,BCD+N-1 改成 LEA DI,BCD;DEC DI 改成 INC DI,其它指令不 变,程序执行后,从 BCD 开始的 N 个字节单元中的内容 是 1 2 3 4。 【问题五】取消数据段的 BCD 存储区,将经处理后的数据放回原处,修改程序如下 DATA SEGMENT BUF DB '1234' N=$-BUF DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LOOP1:MOV AL,[SI] SUB AL,30H 变量 值 EA BUF → 31H 0 32H 1 33H 2 34H 3 BCD → 4 4 3 5 2 6 1 7 变量 值 EA BUF → 31H 0 32H 1 33H 2 34H 3 BCD → 1 4 2 5 3 6 4 7
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有