第四章汇编语言源程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章汇编语言源程序设计
1.画出数据段汇编后相应存储单元中的内容并标出存储单元的逻辑地址。
DA TA SEGMENT
ORG 0100H
ABC0 EQU 78H
ABC DB 09H,-2,45H, 2 DUP(01H,?),‘AB’
ABC1 DW -2, 34H+ABC0,$
ABC2 DD 12H
ABC3 DW ABC
DA TA ENDS
解:
DS:0100H ABC→
DS:0101H
DS:0102H
DS:0103H
DS:0104H
DS:0105H
DS:0106H
DS:0107H
DS:0108H
DS:0109H ABC1→
DS:010AH
DS:010BH
DS:010CH
DS:010DH
DS:010EH
DS:010FH ABC2→
DS:0110H
DS:0111H
DS:0112H
DS:0113H ABC3→
DS:0114H
2.设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?)
COUNT DD ?
PLENTH EQU $-PARTNO
问PLENTH的值为多少?它的含义是什么?
解:PLENTH的值为22(16H)。表示当前位置与PARTNO之间有22个字节空间。3.假设程序中的数据定义如下:
LNAME DB 30 DUP(?)
ADDRESS DB 30 DUP(?)
CITY DB 15 DUP(?)
CODE_LIST DB 1,7,8,3,2
(1)用一条MOV指令将LNAME的偏移地址放入AX;
(2)用一条指令将CODE_LIST的头两个字节的内容放入SI:
(3)写一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。解:(1)MOV AX,OFFSET LNAME
(2)MOV SI,WORD CODE_LIST
(3)CODE_LENGTH EQU $-CODE_LIST
4.执行下列程序段后,AX、BX的内容各是什么?
MOV AX,0001H
MOV BX,8000H
NEG AX
MOV CX,4
AA:SHL AX,1
RCL BX,1
LOOP AA
HLT
解:AX=0FFF0H,BX=000FH
5.阅读以下程序,回答问题
DA TA SEGMENT
ABC DB 90H,12H,43H,56H,04H,01H
COUNT EQU $-ABC
RESULT DW ?
DA TA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:PUSH DS
MOV AX,DA TA
MOV DS,AX
XOR AX,AX
MOV CX,COUNT
LEA SI,ABC
LEA DI,RESULT
AA:MOV BL,[SI]
INC SI
CMP BL,80H
JC NEXT1
NEG BL
NEXT1:ADD AL,BL
ADC AH,00H
LOOP AA
MOV [DI],AX
MOV AH,4CH
INT 21H
CODE ENDS
END START
(1)程序完成什么功能?
(2)程序中NEG BL指令的作用是什么?
(3)程序执行结束后RESULT字单元的内容是什么?
(4)能否用MOV SI,OFFSET ABC代替程序中LEA SI,ABC指令?(5)汇编结束后符号COUNT的值是什么?
解:(1)程序完成求一组有符号字节数的绝对值之和。
(2)程序中NEG BL指令的作用是求负数的绝对值。
(3)程序执行结束后RESULT字单元的内容是0120H。
(4)能。
(5)汇编结束后符号COUNT的值是06H。
6.阅读以下程序,回答问题
DSEG SEGMENT
ARRAY DB 34H,56H,23H,70H,96H
COUNT EQU $-ARRAY
DSEG ENDS
SSEG SEGMENT PARA STACK ‘STACK’
DB 256 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,SS:SSEG
START:MOV AX,DSEG
MOV DS,AX
MOV SI,OFFSET ARRAY
MOV CX,COUNT
CLD
NEXT: LODSB
MOV BL,AL
AND AL,0F0H
PUSH CX
MOV CL,4
SHR AL,CL
OR AL,30H
CALL DISP
MOV AL,BL
AND AL,0FH
OR AL,30H
CALL DISP
DEC CX
JCXZ DONE
MOV AL,2CH ;逗号的ASCII码为2CH