# **写完没截图,讲究看吧** :) ## T1 求字节单元,字单元,双字单元 ## T2 分别说明下列指令格式错误的原因。 1) MOV BL, AX 2) MOV CS, AX 3) MOV 100H, AX 4) MOV [SI], [DI] 5) MOV ES, DS ## T3 若(DS)=3000H,(SS)=2000H,(BX)=1000H,(BP)=300H,(SI)=1234H,ABC=90H,指出下列指令中源操作数的寻址方式,并计算源操作数的物理地址是多少? 1)MOV AX,[BX][SI] 2)MOV AX, ABC[BP+SI] ## T4 A=01001101,B=11101001,执行加法操作,写出两数之和,并写出CF、PF、AF、ZF、SF、OF各标志位的状态值。 ## T5 设有符号字节类型变量x、y、z的初始值分别是+1,0,-1。要求: (1)定义包含三个参数的名称为MIN的宏,计算三个参数的最小值,存入寄存器AL; (2)定义过程main,调用宏MIN计算变量x、y、z的最小值,并存入变量minValue; (3)粘贴源代码,并提交源程序(.asm)文件。 ## T6 编写一个过程将字符串中的小写字母转换为大写字母,其他字符不变。主过程调用该子过程完成字符串转换,并显示输出。粘贴源代码,并提交源程序(.asm)文件。 ## T7 从1开始依次累加自然数,直到累加和大于5000为止,统计被累加的自然数的个数,存入寄存器DX,并将累加和存入寄存器AX。要求: (1)定义主过程main实现程序所有功能; (2)粘贴源代码,并提交源程序(.asm)文件。 ## T8 设字类型变量X、Y、Z、V的初始值分别是20,-10,100,200,要求: (1)定义过程main,计算表达式 (V-(X*Y+Z-500))/X 的值,商存入寄存器AX,余数存入寄存器DX,变量X、Y、Z、V的值保持不变; (2)粘贴源代码,并提交源程序(.asm)文件。 ## T9 设字类型数组变量array的初始值为{1,-2,3,-4,5,-6,7,-8,9,-10},计算求数组所有元素的累加和 ,并赋值给字类型变量sum。要求: (1)定义子过程proAdd,计算数组元素累加和,两个参数(数组基地址、数组元素个数)必须采用堆栈传递,返回值(累加和)以寄存器AX传回主调过程; (2)定义主过程main,调用proAdd计算数组累加和,并赋值给变量sum; (3)粘贴源代码,并提交源程序(.asm)文件。 ## T10 变量x、y、z、w 均为无符号字节类型,编程计算w=x+y+24-z。要求: (1)定义子过程readInt以十进制格式从键盘输入一个无符号整数到寄存器AL; (2)定义子过程writeInt把寄存器BL的值以十进制无符号整数的格式输出到显示器; (3)定义主过程main实现表达式计算,调用子过程readInt和writeInt实现数据的输入和输出。 (4)粘贴源代码,并提交源程序(.asm)文件,提交程序运行屏幕截图。