第3章 习题解答2
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• • • • • • • DATA CHAR DATA CODE SEGMENT DB 26 DUP(?) ENDS SEGMENT ASSUME CS: CODE, DS: DATA, START: MOV AX, DATA MOV DS, DATA
• • • • LOP1: • • • • • • CODE •
习题3.14
• 设A,B是长度为10的字节数组,用串操作指令编写程 序实现AB两数组内容的相互交换.试完善程序.
DATA SEGMENT A BD 1,2,3,4,5,6,7,8,9,0AH ORG 0010H B DB 0AH,9,8,7,6,5,4,3,2,1 DATA ENDS … LEA SI,A LEA DI,B MOV CX,10
习题3.10
• 程序中数据定义如下: ARRAY DB ‘ABCDEF’ RESULT DB ? TABLE DW 20 DUP(?) • 则执行指令 MOV AX,TYPE RESULT后,AX=1 MOV BX, TYPE TABLE后,BX= 2 MOV CX, LENGTH TABLE后,CX=20 MOV DX, LENGTH ARRAY后,DX=1 MOV SI ,SIZE TABLE后,SI=2×20=40 MOV DI ,SIZE ARRAY后,DI=1
第4章 汇编语言程序设计习题 解答 请打开书P188
Baidu Nhomakorabea
习题3.8
• 画出下列语句的数据在存储器中的存储情况: • ARRAYB DB 63,63H,’ABCD’,3 DUP(?),2 DUP(1,3) • ARRAYW DW 1234H,5,’AB’,’CD’,?,2 DUP(1,3)
3FH 63H 41H 42H 43H 44H XX XX XX 01H 03H 01H 03H
AL, XX 0 BL, 1 AL, AL DONE AL, 1
LOP1:
MOV MOV AH, MOV AND JZ SHL
• • • NEXT: • • DONE: •
JNC OR SHL JMP MOV YY, HLT
NEXT AH, BL BL, 1 LOP1 AH
习题3.16
• 试编写一程序段,在CHAR为首的26个单 元中依次存放字母‘A’- ‘Z’.
习题3.13
• 下面程序段的功能是把DA1数据区的0-9转换为对应的 ASCⅡ码.
DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT = ASCI-DA1 LEA SI,DA1 ;送数组DA1的首地址偏移量到SI LEA DI, ASCI ;送数组ASCI的首地址偏移量到DI MOV CX, CUNT;送数组DA1的长度 LOP1: MOV AL,[SI] ;取数 ADD AL,30H;或者OR AL,30H;加30H变成ASCⅡ码 MOV [DI],AL ;转换后存入数组ASCI INC SI ;源数据地址加1 INC DI ;目的数据地址加1 LOOP LOP1 ;CX-1→CX,判断CX≠0,则转
MOV SI, OFFSET CHAR MOV CX, 26 MOV AL, 41H MOV [SI], AL INC SI INC AL LOOP LOP1 MOV AH, 4CH INT 21H ENDS END START
习题3.17
CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX LEA BX, SQRTAB MOV AL,DAT CMP AL,0 JGE PLUS NEG AL PLUS: XLAT MOV SQR, AL MOV AH, 4CH INT 21H CODE ENDS END BEGIN
习题3.12
• 下面程序段是实现从键盘输入十个一位10进制数后 累加,最后累加和以非压缩BCD码形式存放在AH (高位)和AL (低位)中。试把程序段中所空缺 的指令填上。 XOR BX ,BX ;BX清零 MOV CX,10 ; 传送数据长度 LOP:MOV AH,01H;中断INT 21H的01H号调用 INT 21H ;中断调用P184,输入的在AL中 MOV AH,BH ;将BH的内容传AH ADD AL,BL ;BL与AL的值相加,结果在AL中 AAA ;非压缩BCD码加法调整 MOV BX,AX ;累加结果送BX LOOP LOP ;CX-1→CX,判断CX≠0,则转
LOP: LODSB XCHG AL,[DI] XCHG SI,DI DEC DI STOSB XCHG SI,DI INC DI LOOP LOP
习题3.15
• 编写一程序段,将AL中的第7和第0位,第6和第1位,第5 和第2位,第4和第3位互换.
• • • • • • • • • XX YY … DB DB ? ?
习题4.17
• 设在数据段中有X,Y两个变量(字节单元),试编写程序段计算 (只写有关功能的指令). X 当X≥0时 • Y= │X│ 当X <0时 X DB ? Y DB ? MOV AL, X TEST AL, 80H JZ L1 NEG AL L1: y, AL
34H 12H 05H 00H 42H 41H 44H 43H XX XX 01H 00H 03H 00H 01H 00H 03H 00H
习题3.9
• 程序中数据定义如下: DATA1 DW ? DATA2 DB 32 DUP(?) DATA3 DD ? DLENGTH EQU $-DATA1 • 此时DLENGTH的值是多少? 解答: DLENGTH=2(字)+32+4(双字)=38
习题3.11
• 试按下列要求在数据段中依次书写各数据定义语句: (1)以DA1为首字节的连续存储单元中存放20H个重 复的数据序列:2,3,10个4,一个7。 (2)DA2为字符串变量,用字变量(DW)设置一字 符串;‘STUDENTS’(按次顺序存放在各单元中)。 (3)用等值语句给符号COUNT赋值以DA1为首地址 的数据区共占有的字节数,此等值语句必须放在最 后一语句。 解答: (1)DA1 DB 20H DUP(2,3,10 DUP(4),7) (2)DA2 DW ‘TS’, ‘DU’,‘NE’,’ST’, (3) COUNT EQU $- DA1
• • • • LOP1: • • • • • • CODE •
习题3.14
• 设A,B是长度为10的字节数组,用串操作指令编写程 序实现AB两数组内容的相互交换.试完善程序.
DATA SEGMENT A BD 1,2,3,4,5,6,7,8,9,0AH ORG 0010H B DB 0AH,9,8,7,6,5,4,3,2,1 DATA ENDS … LEA SI,A LEA DI,B MOV CX,10
习题3.10
• 程序中数据定义如下: ARRAY DB ‘ABCDEF’ RESULT DB ? TABLE DW 20 DUP(?) • 则执行指令 MOV AX,TYPE RESULT后,AX=1 MOV BX, TYPE TABLE后,BX= 2 MOV CX, LENGTH TABLE后,CX=20 MOV DX, LENGTH ARRAY后,DX=1 MOV SI ,SIZE TABLE后,SI=2×20=40 MOV DI ,SIZE ARRAY后,DI=1
第4章 汇编语言程序设计习题 解答 请打开书P188
Baidu Nhomakorabea
习题3.8
• 画出下列语句的数据在存储器中的存储情况: • ARRAYB DB 63,63H,’ABCD’,3 DUP(?),2 DUP(1,3) • ARRAYW DW 1234H,5,’AB’,’CD’,?,2 DUP(1,3)
3FH 63H 41H 42H 43H 44H XX XX XX 01H 03H 01H 03H
AL, XX 0 BL, 1 AL, AL DONE AL, 1
LOP1:
MOV MOV AH, MOV AND JZ SHL
• • • NEXT: • • DONE: •
JNC OR SHL JMP MOV YY, HLT
NEXT AH, BL BL, 1 LOP1 AH
习题3.16
• 试编写一程序段,在CHAR为首的26个单 元中依次存放字母‘A’- ‘Z’.
习题3.13
• 下面程序段的功能是把DA1数据区的0-9转换为对应的 ASCⅡ码.
DA1 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASCI DB 10 DUP(?) CUNT = ASCI-DA1 LEA SI,DA1 ;送数组DA1的首地址偏移量到SI LEA DI, ASCI ;送数组ASCI的首地址偏移量到DI MOV CX, CUNT;送数组DA1的长度 LOP1: MOV AL,[SI] ;取数 ADD AL,30H;或者OR AL,30H;加30H变成ASCⅡ码 MOV [DI],AL ;转换后存入数组ASCI INC SI ;源数据地址加1 INC DI ;目的数据地址加1 LOOP LOP1 ;CX-1→CX,判断CX≠0,则转
MOV SI, OFFSET CHAR MOV CX, 26 MOV AL, 41H MOV [SI], AL INC SI INC AL LOOP LOP1 MOV AH, 4CH INT 21H ENDS END START
习题3.17
CODE SEGMENT ASSUME CS:CODE,DS:DATA BEGIN: MOV AX,DATA MOV DS,AX LEA BX, SQRTAB MOV AL,DAT CMP AL,0 JGE PLUS NEG AL PLUS: XLAT MOV SQR, AL MOV AH, 4CH INT 21H CODE ENDS END BEGIN
习题3.12
• 下面程序段是实现从键盘输入十个一位10进制数后 累加,最后累加和以非压缩BCD码形式存放在AH (高位)和AL (低位)中。试把程序段中所空缺 的指令填上。 XOR BX ,BX ;BX清零 MOV CX,10 ; 传送数据长度 LOP:MOV AH,01H;中断INT 21H的01H号调用 INT 21H ;中断调用P184,输入的在AL中 MOV AH,BH ;将BH的内容传AH ADD AL,BL ;BL与AL的值相加,结果在AL中 AAA ;非压缩BCD码加法调整 MOV BX,AX ;累加结果送BX LOOP LOP ;CX-1→CX,判断CX≠0,则转
LOP: LODSB XCHG AL,[DI] XCHG SI,DI DEC DI STOSB XCHG SI,DI INC DI LOOP LOP
习题3.15
• 编写一程序段,将AL中的第7和第0位,第6和第1位,第5 和第2位,第4和第3位互换.
• • • • • • • • • XX YY … DB DB ? ?
习题4.17
• 设在数据段中有X,Y两个变量(字节单元),试编写程序段计算 (只写有关功能的指令). X 当X≥0时 • Y= │X│ 当X <0时 X DB ? Y DB ? MOV AL, X TEST AL, 80H JZ L1 NEG AL L1: y, AL
34H 12H 05H 00H 42H 41H 44H 43H XX XX 01H 00H 03H 00H 01H 00H 03H 00H
习题3.9
• 程序中数据定义如下: DATA1 DW ? DATA2 DB 32 DUP(?) DATA3 DD ? DLENGTH EQU $-DATA1 • 此时DLENGTH的值是多少? 解答: DLENGTH=2(字)+32+4(双字)=38
习题3.11
• 试按下列要求在数据段中依次书写各数据定义语句: (1)以DA1为首字节的连续存储单元中存放20H个重 复的数据序列:2,3,10个4,一个7。 (2)DA2为字符串变量,用字变量(DW)设置一字 符串;‘STUDENTS’(按次顺序存放在各单元中)。 (3)用等值语句给符号COUNT赋值以DA1为首地址 的数据区共占有的字节数,此等值语句必须放在最 后一语句。 解答: (1)DA1 DB 20H DUP(2,3,10 DUP(4),7) (2)DA2 DW ‘TS’, ‘DU’,‘NE’,’ST’, (3) COUNT EQU $- DA1