




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题一1 无符号数: 11010011=211=D3H,01110111=119=77H,10000011=131=83H,00101111=47=2FH,10101010=170=AAH带符号数:11010011= -45=D3H,01110111=+119=77H,10000011= -125=83H,00101111=+47=2FH,10101010= -86=AAH2 5E8AH,0BE6H,3DEH,4940H3 00011101+00110101=01010010=52H=8201001001+11101000=00110001=31H=4910111110+01010010=00010000=10H=1610011010+11110001=10001011=8BH= -117400101001+01010011=01111100+00000110=10000010=82H=820111001100100100=0100111100000110=01001001=49H=4901100110+00011000=01111110+00000110=10000100=84H=840000000100110010+01110101=0000000110100111+00000110=0000001000000111=0207H=2075 000020A3H,FF94H,00003456H,007FH,FFFFEC00H6 无符号数:065535,0000HFFFFH;带符号数:-32768+32767,8000H7FFFH7 (1) 38H等于十进制数56,是十进制数56的补码,数字8的ASCII码,十进制数38的压缩BCD码(2) FFH等于十进制数-1,是带符号数-1的补码,无符号数为255(3) 5AH等于十进制数90,是十进制数90的补码,大写字母Z的ASCII码(4) 0DH等于十进制数13,是十进制数13的补码,回车符的ASCII码8 (1) 108=01101100B=6CH,补码01101100B,压缩BCD码0000000100001000,ASCII码313038H(2) 46=00101110B=2EH,补码00101110B,压缩BCD码01000110,ASCII码3436H(3) 15=11110001B=F1H,补码11110001B,ASCII码2D3135H(4) 254=0000000011111110B=00FEH,补码0000000011111110B,压缩BCD码0000001001010100,ASCII码323534H9 (1) 56+63=01110111B,CF=0,SF=0,ZF=0,OF=0(2) 83-45=00100110B,CF=0,SF=0,ZF=0,OF=0(3) -74+29=11010011B,CF=0,SF=1,ZF=0,OF=0(4) -9237=01111111B,CF=1,SF=0,ZF=0,OF=110 回车、换行、响铃、ESC键、空格键、P、p习题二9 最少划分为16个逻辑段,最多划分为65536个逻辑段(每段16个字节)10 CS:IP,DS:BX、SI、DI,ES:BX、SI、DI,SS:SP、BP11 字节单元保存8位数,字单元保存16位数。根据源操作数的属性确定要访问的是字节单元还是字单元。 12 对于字节单元来说,偶地址和奇地址一样;对于字单元而言,最好用偶地址保存,可减少CPU的访存次数。13 首单元的物理地址=38AE8H,末单元的物理地址=38AE8H+7FFFH=40AE7H16 (1)物理地址=27679H (2) 物理地址=20F92H (3) 物理地址=20F92H (2)和(3)的物理地址是一样的。说明逻辑地址不唯一,多个逻辑地址可对应到同一个物理单元上。17 代码段CS:IP的物理地址=55A84H 堆栈段SS:SP的物理地址=4DB65H数据段DS:BX的物理地址=17678H 附加段ES:DI的物理地址=2BA41H18 当前栈指针所指单元的物理地址是1522CH。堆栈区中还能保存254个字。19 执行E 20020 执行U 100 21 执行R CX,然后输入10022 执行E DS:0 a b c d 习题三3 MOV AX,BX 源操作数为寄存器寻址,EA 无,物理地址 无MOV AX,1290H 立即寻址,EA 无,物理地址 无MOV AX,BX 寄存器间接寻址,EA=1290H, 物理地址=2FBB0HMOV AX,DS:1290H 直接寻址,EA=1290H, 物理地址=2FBB0HMOV AX,BP 寄存器间接寻址,EA=6756H, 物理地址=26A56HMOV DIBX,AX 目的操作数为基址变址寻址,EA=3C06H, 物理地址=32526HMOV ES:SI,AX 寄存器间接寻址,EA=348AH, 物理地址=50CAAH7 MOV AX,CX 错。CX不能为间址寄存器MOV AL,1200H 错。立即数超出8位寄存器范围MOV AL,BX 错。两个操作数不匹配MOV SIDI,AX 错。两个变址寄存器不能在一起MOV ES:DX,CX 错。DX不能为间址寄存器MOV AX,VALUE 错。AX不能为间址寄存器MOV COUNT,SI 错。两个操作数不能都是存储单元8 (1) MOV AX,BX (2) MOV CL,15 (3) ADD AX,BX (4) MOV BX+SI,AL (5) MOV AX,VALUESI (6) SUB AX,DS:2000H9 (1) ADD AX,X+4MOV Y,AX (2) MOV BX,4ADD AX,XBX MOV Y,AX(3) MOV BX,4MOV SI,OFFSET XADD AX,BX+SIMOV Y,AX10 立即寻址方式中操作数(立即数)和指令一起存放在代码段中。习题四10 (1) DATA SEGMENTX DW 0Y DW 0DATA ENDS(2) STRING DB Computer(3) COUNT DB 100 DUP(?)(4) PI EQU 3.14(5) VALUE LABEL BYTE11 (1)对。(2)错。260超出了字节范围。(3)错。X3是字节型,1234H是字型,不匹配。(4)对。(5)错。缺少DUP。(6)对。12 (1)AL=3。(2)AX=2103H。(3)DX=TABLE的偏移地址。(4)CL=33H(5)BX=TABLE的段地址。(6)BX=1。(7)DX= TABLE的偏移地址。13 MOV DX,2012HMOV AX,5D68HMOV CX,1003HMOV BX,49A6HADD AX,BX (SUB AX,BX)ADC DX,CX (SBB DX,CX)14 SUB AX,CXSBB DX,015 MOV AX,extraMOV ES,AX16 (1) MOV AL,16ADD AL,XMOV BL,5IMUL BLMOV Z,AX(2) MOV BL,4MOV AL,XIDIV BLSUB AL,YMOV Z,AX(3) MOV AL,XMOV BL,8IMUL BLMOV DX,AXMOV AH,0MOV AL,YMOV BL,16IDIV BLCBWADD DX,AXMOV AH,0MOV AL,WIMUL ALSUB DX,AXMOV Z,DX(4) MOV AL,XADD AL,YMOV BL,XSUB BL,YMOV AH,0IMUL BLMOV Z,AXMOV AL,XIDIV YCBWSUB Z,AX17 Z= (5+22-15)*14= 16818 从伪指令END START处获知程序从START标号开始。19 (1)减法: (2) 加法:MOV AX,8576H MOV AX,8576HMOV BX,9988H MOV BX,9988HSUB AX,BX ADD AX,BX结果:AX=EBEEH 结果:AX=1EFEHCF=1,OF=0,ZF=0,SF=1 CF=1,OF=1,ZF=0,SF=021 (1) MOV AL,56HMOV BL,34HADD AL,BLDAAMOV Y1,AL(2) MOV AX,128HMOV BX,35HSUB AX,BXDASMOV Y2,AL(3) MOV AL,68HMOV BL,23HADD AL,BLMOV BL,45HSUB AL,BLDASMOV Y3,AL22 (1) MOV AX,0708HMOV BX,0406HADD AL,BLADD AH,BH ;不用带进位加AAA ;加法调整,含进位调整MOV BX,AXXCHG AH,AL ;高4位调整AAAMOV BH,ALMOV Z1,BX ;保存十位、各位,百位在CF中(2) MOV AX,0905HMOV BX,0207HSUB AL,BLSUB AH,BH ;不用带借位减AAS ;减法调整MOV Z2,AX(3) MOV AX,0102HMOV BX,0006HMUL BX ;乘法先不用调整MOV BX,0303HSUB AX,BXAAS ;减法调整MOV Z3,AX(4) MOV AX,0704HMOV BX,0108HADD AL,BLADD AH,BHAAA ;加法调整MOV BL,6AAD ;除法调整DIV BLMOV BH,AH ;余数保存在BHAND AX,000FHAAA ;商调整MOV Z4,AX ;保存商23 .model small.databuff db ?.codestart:mov ax,datamov ds,axmov ah,1 ;键盘输入int 21hsub al,30h ;去掉ASCII码mov buff,almov ah,4chint 21hend start24 .model small.codestart:mov ah,1 ;键盘输入int 21hsub al,20h ;变为大写mov dl,almov ah,2int 21hmov ah,4chint 21hend start25 .model small.datax db 12hy db 34h.codestart:mov ax,datamov ds,axmov al,xadd al,y ;结果为46Hmov ah,al ;AH=46Hand al,0fh ;AL=06Hmov cl,4rol ah,cl ;AH=64Hand ah,0fh ;AH=04Hadd ax,3030h ;AX=3436Hmov bx,axmov dl,bh ;显示4mov ah,2 int 21hmov dl,bl ;显示6int 21hmov ah,4chint 21hend start26 data segment x db 0.000,1.000,1.414,1.732,2.000db 2.236,2.449,2.646,2.828,3.000 ;建立字符表y db 5 dup(?) ;存放查到平方根u db 3 ;要查的数data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov al,u ;要查的数mov cl,5mul cl ;u*5=15(号单元开始)mov ah,0mov bx,ax ;地址保存到bxmov si,0let1:mov al,xbx ;取出平方根数字mov ysi,al ;存入yinc siinc bxloop let1 ;循环取出5次mov ah,4chint 21hcode endsend start27 .model small.datax1 db zhang yan $ ;姓名为10个字符宽度x2 db li li $x3 db wang lan $x4 db zhao xue $x5 db li jiang $u db 3 ;要查的学号.code start:mov ax,datamov ds,axmov al,u ;给出学号mov cl,10mul cl ;u*10=30(号单元开始)mov ah,0mov dx,ax ;地址保存到dxmov ah,9 ;9号功能显示字符串int 21hmov ah,4chint 21hend start28编程实现公式计算Z=X/4+16Y。.model small.datax db 4 y db 6z db ?.code start:mov ax,datamov ds,axmov al,x ;mov cl,2sar al,cl ; X/4mov cl,4mov bl,ysal bl,cl ;16Yadd al,bl ;X/4+16Ymov z,almov ah,4chint 21hend start29 .model small.datay db ?,?.code start:mov ax,datamov ds,axmov al,3 ;设al=3mov cl,6mul cl ;al*6mov cl,4 ;设cl=4sub al,cl ;相减mov bl,3 idiv bl ; /3mov y,al ;商mov y+1,ah ;余数mov ah,4chint 21hend start习题五11 进位标志CF=1 12 先把AX的值除以8等于0246H,再把高12位屏蔽为0,剩下AL=06H加上30H变为ASCII码显示出来。13 判断X0,是,Z=X-Y;否则Z=X的绝对值 14(1) 目的操作数是存储单元时,要用PTR伪操作指出单元的属性 (2)DS段寄存器使用非法 (3)立即数使用非法 (4) 目的操作数不允许是立即数 (5) 两个操作数不允许都是存储单元 (6)移位次数超过1要用CL表示。15 AND AL,11011111B16 (1) AL=30H (2) AL=B7H (3) AL=C8H (4)AL=38H27 分支程序设计。完成如下公式的计算,请写出程序。 (X+3)/2 X0Y= 0 X=0 X4 X0程序如下:DATA SEGMENTX DB 23Y DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JE SUB2JG SUB1MOV CL,2SAL AL,CLJMP SHORT SUB2SUB1:ADD AL,3SAR AL,1SUB2: MOV Y,ALMOV AH,4CHINT 21HCODE ENDSEND START28 设X、Y、Z为字节单元。如果X0,Z=4X-Y/16,否则,Z=X的绝对值。编程序实现。程序如下:DATA SEGMENTX DB 3Y DB 5Z DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XCMP AL,0JL SS1MOV CL,2SAL AL,CLMOV BL,YMOV CL,4SAR BL,CLSUB AL,BLJMP OUT1SS1: NEG ALOUT1: MOV Z,ALMOV AH,4CHINT 21HCODE ENDSEND START29 字数组M中有10个数据,分类统计其中正数、负数、0的个数,分别存入POSI、NEGA、ZERO 单元。程序如下:DATA1 SEGMENTM DW 21,-34,32,112,-324,0,76,0,48,50POSI DW ?NEGA DW ?ZERO DW ?DATA1 ENDSCODE1 SEGMENTASSUME CS: CODE1,DS:DATA1START: MOV AX,DATA1MOV DS,AXMOV CX,10LEA SI,MAGAIN: CMP WORD PTR SI,0JL LOWERJE EQUALINC POSIJMP LPP1LOWER: INC NEGAJMP LPP1 EQUAL: INC ZEROLPP1: ADD SI,2DEC CXJNZ AGAINMOV AH,4CHINT 21HCODE1 ENDSEND START30 试编写程序,从键盘接收一英文单词,以空格结束,将其存入BUF开始的存储单元中,并在最后加上字符串结束符$。主要程序部分:LEA BX,BUFLOP: MOV AH,1INT 21HCMP AL,20HJE NEXTMOV BX,ALINC BXJMP LOPNEXT: MOV BYTE PTRBX,$31 编程。将AX寄存器中的16位数分成4组,每组4位,从低到高分别放在AL,BL,CL,DL中。程序段:START:MOV AX,1234HMOV BX,AXAND AL,0FH ;4AND BL,0F0H ;3AND AH,0FHMOV CL,AH ;2AND BH,0F0HMOV DL,BH ;1习题六11 累加和TOTAL=8312 循环统计X中0的个数13 (1) 将BB1:RCL AL,1改为BB1:ROL AL,1(2) 将BB2:CMP BX,TLOOPNE BB2改为:DEC BXBB2:INC BXCMP BX,TLOOPNE BB215 计算Y=12+34+56+78+910的程序段答案:MOV AL,1MOV BL,2MOV DX,0MOV CX,5AA1:MUL BLADD DX,AXINC BLMOV AL,BLINC BLLOOP AA116写程序段。查找CATT表中的字符”,找到后将SIGN单元置1,否则SIGN单元置0。catt db asddddsign db ?mov ax,extramov es,axmov sign,0mov al,lea di,cattcldmov cx,7repnz scasbjcxz neemov sign,1nee: mov ah,4chint 21h17写程序段。在长度为N的字数组VALUE中统计负数的个数并保存到AX中。value dw 2,-4,-5,3,6,6,-8n equ ($-value)/2 ;元素个数start: mov ax,datamov ds,axmov cx,nmov bx,0mov ax,0rept1:mov si,valuebx ;取出元素cmp si,0 jge let1 ;0 转let1inc ax ;为负数,ax加1let1: add bx,2loop rept118从键盘输入一个数字,在屏幕上显示出以该数字开始10个数字串。CODE SEGMENTASSUME CS:CODESTART: MOV AH,1INT 21HMOV CX,10MOV BL,ALREPT1: CMP BL,9JLE NEXTSUB BL,10NEXT: MOV DL,BLMOV AH,2INT 21HINC BLLOOP REPT1MOV AH,4CHINT 21HCODE ENDSEND START19 data segmentbunch1 db stadentbunch2 db studEntdata endscode segmentassume cs:code,ds:data,es:datastart:mov ax,datamov ds,axmov es,axlea si,bunch1lea di,bunch2mov bx,0 ;bh=相同的个数,bl=不同的个数mov cx,7let1:mov al,sicmp al,di ;两字符比较jz equl ;相同转equlinc bl ;不同bl加1jmp out1equl: inc bhout1:inc siinc diloop let1mov dl,n ;显示n,代表不同mov ah,2hint 21hadd bl,30h ;加上ASCII码mov dl,bl ;显示不同的个数int 21hmov dl,e ;显示e,代表相同int 21hadd bh,30hmov dl,bh ;显示相同的个数int 21h mov ah,4chint 21hcode endsend start21 DATA SEGMENTSTR DB SDABF G H0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DI,STRSPACE:MOV CX,10MOV AL,DICMP AL,0JE OUTCMP AL,20HJE DELETEJMP EXITSUB CX,DIMOV SI,DIDELETE:MOV BL,SI+1MOV SI,BLINC SILOOP DELETEEXIT:JMP SPACEOUT:MOV AH,4CHINT 21HCODE ENDSEND START23设计思路:(1) 用EQU伪指令获得需转换的十进制数的个数;(2) 用双重循环。外循环控制个数,用x作为中间变量;(3) 内循环将一个3位十进制数去掉ASCII码后按位数扩大10倍再相加,保存后即存储为二进制数;(4) 分两个数组保存ASCII码表示的十进制数和转换后的二进制数。程序如下: ; 6-23.asm 将内存中用ASCII码表示的100以内的十进制数转变为二进制数data segmentscore1 db 36h,37h,20h,31h,30h,30h,38h,35h,20h,31h,30h,30h ;即67,100,85,100x dw ?n equ 3 ;三位数num equ (x-score1)/n ;十进制数个数score2 dw num dup(0) ;保存转换后的二进制数data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov cx,num mov si,-2mov bx,0rept1: push cx ;保存外循环次数mov cx,nrept2: mov al,score1bx ;从score1取数cmp al,30h ;判断是否0-9jl exitcmp al,39hjg exitand ax,000fh ;去掉ASCII码xchg ax,x mov dx,10 ;将ax中前一次形成的数扩大10倍mul dx xchg ax,xadd x,ax ;相加后保存到xexit: inc bx ;取下一位数loop rept2pop cx ;弹出外循环次数add si,2mov ax,xmov score2si,ax ;转换后的数据保存到score2mov x,0 loop rept1mov ah,4chint 21hcode endsend start习题七12 功能:两个字节数相加。X和BL相加保存到Y。13 功能:键盘输入的字符保存到KEY单元中,直到按回车为止。14 功能:将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。先将0008H入栈,再将0005H入栈,结果为58。16PUSH AXPUSH BXMOV BX,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERBX,AL ;保存到BUFFERINC BXJMP LET1EXIT:POP BXPOP AXRETKEY_IN ENDP17 KEY_IN_DEC PROC PUSH AXPUSH BXMOV X,0MOV BX,0MOV SI,0LET1:MOV AH,1INT 21HCMP AL,0DH ;输入回车退出JZ EXITMOV BUFFERSI,AL ;保存到BUFFERINC SIJMP LET1EXIT:MOV CX,SI ;位数放在CXMOV SI,0LET2:MOV AL, BUFFERSISUB AL,30HMOV AH, 0XCHG AX,X ;形成十进制数MOV BX,10MUL BXXCHG AX,XADD X,AX ;保存INC SILOOP LET2POP BXPOP AXRETKEY_IN _DEC ENDP23 calcu procpush axpush bxpush simov ax,0mov al,xand al,aljns zzneg almov fuhao,-zz:mov si,0mov bx,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 印刷电路板和相关生产废料资源回收加工项目可行性研究报告-立项备案
- 2025合同成立的两个关键步骤
- 《量化交易基础》课件
- 山东省滨州市北镇中学2025届高三下学期第五次能力训练生物试题 含解析
- 2025国内货物买卖合同示范文本
- 2025私营公司雇佣员工合同
- 2025公寓楼买卖合同(现售)
- 2025智慧医疗PPP项目合同
- 《精神疾病的识别》课件
- 村庄道路维护协议书
- 铁路网络安全知识培训
- 煤矿事故案例警示
- 2025年南通师范高等专科学校高职单招(数学)历年真题考点含答案解析
- 第10课 金与南宋对峙 教案2024-2025学年七年级历史下册新课标
- 2025年自来水笔试题及答案
- 2025年郑州铁路职业技术学院单招职业适应性测试题库及参考答案1套
- 船舶驾驶培训虚拟场景构建-深度研究
- 树木移植的施工方案
- 四川大学自主招生个人陈述语言风格范文
- 5.2《稻》教案-【中职专用】高二语文同步教学(高教版2023·拓展模块下册)
- 人工智能在智能安防中的应用
评论
0/150
提交评论