8. 下列程序段执行完后,(BX)=____________.
MOV CL, 3 MOV BX, 0B7H ROL BX,1 ROR BX, CL
9. 试分析执行下面的程序段后,(DX)=_____________。 MOV AX, 0FF00H MOV CX, 3H MUL CX
10. 分析下面的程序,画出堆栈最满时各单元的地址及内容。
;******************************************** S_SEG SEGMENT AT 1000H ;定义堆栈段
DW 200 DUP (?) ;200*2=190H TOS LABEL WORD S_SEG ENDS
;******************************************** C_SEG SEGMENT ;定义代码段 ASSUME CS: C_SEG, SS: S_SEG START: MOV AX, S_SEG
MOV SS, AX ;设置SS寄存器的值 MOV SP, OFFSET TOS;SP指向栈底 PUSH DS ;DS的值压入栈 MOV AX, 0 PUSH AX ;0压入栈 ┇
PUSH T_ADDR PUSH AX PUSHF ┇ POPF POP AX POP T_ADDR RET ;
--------------------------------------------------------------------------
C_SEG ENDS ;代码段结束
;******************************************
END START ;程序结束 11.假设在数据段定义有
ARRAY DW 1,2,$+4,3,4
且ARRAY在汇编时分配的偏移地址为0074,则汇编后“$+4”存储单元的值为____________。
12. 如果在数据段中定义:
xyz dw 1,2,3,4,5,6 xyzend dw ? 在代码段中执行 MOV CX, (xyzend-xyz)/2 后,(CX)=__________。
13.假设子程序subp设计中,要用到寄存器AX、BX、CX与其他子程序发生冲突。请完成如下该子程序设计: subp proc far push cx push ax push bx
(本子程序指令系列) __________ __________ __________ ret
subp endp
14.试分析执行下面的程序段后,(AH)=_____________。
MOV AL, 0FFH MOV CL, 2H MUL CL
15. 试分析执行下面的程序段后,(AH)=_____________。
MOV AX, 00FFH MOV CL, 3H DIV CL
四、简答题:
1.请给出建立、运行一个汇编语言程序的基本步骤。 2. 伪指令有什么作用?
3. 有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
4. 在实模式下,段地址和偏移地址为3017:000A的存储单元的物理地址是什么?如果段地址和偏移地址是3015:002A和3010:007A呢?
5. 如果在一个程序开始执行以前(CS)=0A7F0H,(如16进制数的最高位为字母,则应在其前加一个0) (IP)=2B40H,试问该程序的第一个字的物理地址是多少? 6. 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么? (1) 立即寻址 (2) 直接寻址
(3) 使用BX的寄存器寻址 (4) 使用BX的间接寻址
(5) 使用BX的寄存器相对寻址 (6) 基址变址寻址 (7) 相对基址变址寻址
7. 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式: (1) 寄存器间接寻址 (2) 寄存器相对寻址 (3) 基址变址寻址
7. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器的内容。 (1) MOV AX, 1200H (2) MOV AX, BX
(3) MOV AX, [1200H] (4) MOV AX, [BX] (5) MOV AX, 1100[BX] (6) MOV AX, [BX][SI] (7) MOV AX, 1100[BX][SI]
五、程序设计:
1.下面为汇编语言程序的框架,请完成整个框架,保证程序运行结束能正确返回DOS.
……
code segment main proc far assume …… start:
; 给出用ret正确返回DOS的汇编指令
________________
________________ ________________ …… ret main endp code ends
end start
2.下面程序段用来计算Begin到Count的自然数的和,并把结果保存到变量SUM中,请完成如下程序。
Data1 SEGMENT Begin dw 11 Count dw 20 SUM dw ? Data1 ENDS CODE SEGMENT MAIN PROC FAR
ASSUME CS:CODE,DS:Data1 START :
MOV AX,Data1 MOV DS,AX
MOV AX,4C00H
INT 21H MAIN ENDP CODE ENDS
END START
3. 在数据段中定义如下DAT1和DAT2变量:
DAT1
DAT2
DB ‘ABCDEFGHI’ DB 9 DUP(0)
请编写一个程序段,用rep movsb指令,把DAT1的内容复制到DAT2中。
4. 假设在数据段中定义如下变量: DAT_BY DB 20H dup(?) 试编制一程序段,用串操作指令实现以DAT_BY为首址的20H个字节单元中存放相同字符‘A’(设DA_BY存储区已有ES指向)。
5. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
6. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
7. 编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。字符区首地址及其长度为变元。
8. 下列程序段实现将数据区ABUFl首址开始的100个字节数据传送到ABUF2
为首址的数据区去。 CLD
MOV SI,OFFSET ABUFl ______________________________ MOV CX,100
___________________________________
9. 下面程序段是在DAI开始的10个字节中依次存入数据?9?,?8?,……?1?,?0?,在横线处填入指令。
MOV CX,10
__________________________ MOV AL,′9′ CLD LOP:STOSB
__________________________ LOOP LOP
10. 某程序用单个字符显示的INT 21H的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。
STRING DB‘COMPUTER’,‘$’ ┇
MOV BX,0FFSET STRING
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库汇编 复习思考题(3)在线全文阅读。
相关推荐: