




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、把一个字节类型的无符号数乘以20,乘积保存到字类型的变量中,要求采用加法和移位指令完成该乘法运算,不能使用MUL指令。DATA SEGMENTX1 DB X2 DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV AL,DB MOV AH,0 SAL AX,1 SAL AX,1 MOV BX,AX SAL AX,1 SAL AX,1 ADD AX,BX MOV X2,AX MOV AH,4CH INT 21HCODE ENDSEND BEGIN二、对字节变量X1和X2分别进行初始化,然后求它们的无符号乘积和带符号乘积,并将运算结果分别存入字变量S1和S2中。DATA SEGMENTX1 DBX2 DBS1 DW ?S2 DW ?DATA ENDSASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV AL,X1MOV AH,0MUL X2MOV S1,AXMOV AL,X1MOV AH,0IMUL X2MOV S2,AXMOV AH,4CHINT 21HCODE ENDSEND BEGIN三、定义一个带符号的字节数组,数组的长度(元素个数)至少为10,然后求该数组各元素的和,结果保存到字类型的变量中。DATA SEGMENTARRAY1 DB 2,2,2,2,2,2,2,2,2,2,2C1 EQU $-ARRAY1X1 DB ?DATA ENDSCODE SEGMENTASSUME AS:DATA,DA DATAMAIN:MOV AX,DATA MOV DS,AX LEA SI,ARRAY1 MOV CX,C1 MOV DX,0 CALL SUM MOV X1,DX MOV AH,4CH INT 21H SUM PROCGOON:ADD DX,SI INC SI LOOP GOON RET SUM ENDPCODE ENDS END MAIN四、定义两个字节类型的数组,统计既属于第一个数组又属于第二个数组的元素个数,统计结果保存到变量RESULT中。DATA SEGMENT ARY1 DB 1,2,21,19,7,32C1 EQU (ARY1-$)ARY2 DB 3,8,7,5,19C2 EQU (ARY2-$)RESULT DB ?CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV DX,0LEA BX,ARY1MOV DI,C1LOOP:MOV CX,C2LEA SI,ARY2MOV AL,BXLOOP2:CMP AL,BXJNE NOSAMEINC DXJMP SSNOSAME:INC SILOOP LOOP2SS:INC BXDEC DIJNE LOOP1MOV RESULT DLMOV AH,4CHINT 21HCODE ENDSEND BEGIN五、定义两个字节类型的数组,统计只属于第一个数组不属于第二个数组的元素个数,统计结果保存到变量RESULT中。DATA SEGMENT ARY1 DB 1,2,21,19,7,32C1 EQU (ARY1-$)ARY2 DB 3,8,7,5,19C2 EQU (ARY2-$)RESULT DB ?CODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV DX,0LEA BX,ARY1MOV DI,C1LOOP1: MOV CX,C2LEA SI,ARY2MOV AX,BXLOOP2:CMP AX,SIJE LOOP1CMP CX,1JNE GOONINC DXGOON:INC SILOOP LOOP2MOV DL,C1SUB DL,RESULTMOV AH 4CHINT 21HCODE ENDS END BEGIN六、编写程序,用某个十进制数对无符号字节变量VALUE初始化,然后在屏幕上显示与该变量等值的二进制数。DATA SEGMENTVALUE DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV BX,0 MOV CX,4GOON:MOV AH,7 INT 21H CMP AL,0DH JMP STOP CMP AL,0 JB GOON CMP AL,9 JA GOON MOV DL,AL MOV AH,2 INT 21H SUB AL,30H CALL SKIP MOV AH,0 MOV BX,AX LOOP GOONSTOP:MOV VALUE,BX MOV AH,4CH INT 21H SKIP PROC PUSH DX SAL BX,1 MOV DX,BX SAL BX,1 SAL BX,1 ADD BX,DX POP DX RET SKIP ENDPCODE ENDS END BEGIN七、对无符号字变量X1和X2分别进行初始化,然后采用辗转相除法求它们的最大公约数,结果保存到字变量RESULT中。DATA SEGMENTX1 DW 60X2 DW 75RESULT DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATA MOV DS,AX MOV AX,X1 MOV BX,X2 CMP AX,BX JAE GOON XCHG AX,BXGOON:MOV DX,0 DIV BX MOV AX,BX MOV BX,DX CMP DX,0 JNE GOON MOV RESULT AX MOV AH,4CH INT 21HCODE ENDSEND BEGIN八、对字节变量VALUE进行初始化,然后从一个给定的字节数组中查找与该变量值相等的元素,数组的长度保存在变量LEN中。如果找到,则把该元素从数组中删除,并且修改数组的长度;如果未找到,则不做任何处理。Data segmentAry db 1,2,3,4,5,6,7,8,9,10Count equ $-aryLen db countValue db 10Data endsCode segmentAssume cs:code,ds:data,es:dataBegin: mov ax,data Mov ds,ax Mov es,ax Mov ax,value Lea di,ary Mov cx,countCldRepne scasbJne stopCmp cx,0Je skipMov si,diDec diRep movsbSkip:dec lenStop: mov ah,4ch Int 21h Code ends End begin九、编写程序,从键盘输入一个字符串,然后将其中所有的小写字母转换成对应的大写字母,并在屏幕上显示转换后的字符串。DATA SEGMENTSTRING DB 100 DB ? DB 100 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH 0AHINT 21HMOV CL,STRING+1MOV CH,0LEA SI,STRING+2GOON:MOV AL,SICMP AL,aJB SKIPCMP AL,zJA SKIPSUB AL,32SKIP:MOV DL,ALMOV AH,02HINT 21HINC SILOOP GOONMOV AH,4CHINT 21HCODE ENDSEND BEGIN十、编写程序,从键盘输入一个字符串,然后在屏幕上以十进制的形式显示该字符串的长度(字符数)。DATA SEGMENT STRING DB 100 DB ? DB 100 DUP(?)ASC DB 3 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH,0AHINT 21HMOV BX,10LEA SI,ASC+3MOV AX,STRING+1MOV CX,0NEXT:MOV DX,0DIV BXADD DL,48DEC SIMOV SI,DLINC CXCMP AX,0JNE NEXTSHOW:MOV DL,SIMOV AH,2INT 21HINC SILOOP SHOWCODE ENDSEND BEGIN十一、编写程序,用某个十进制数对字变量VALUE进行初始化,然后将其值转换为十六进制形式并在屏幕上输出。DATA SEGMENT VALUE DW 20HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATABEGIN:MOV AX,DATAMOV DS,AXMOV BX,VALUEMOV CX,4GOON:ROL BX,1ROL BX,1ROL BX,1ROL BX,1MOV DX,BXAND DL,0FHCMP DL,9JBE SKIPADD DL,7SKIP:ADD DL,48MOV AL,2INT 21HLOOP GOONMOV AH,4CHINT 21HCODE ENDSEND BEGIN十二、按从小到大的顺序以十进制形式在屏幕上显示110的平方,相邻两个数之间以空格分隔。DATA SEGMENTASC DB 5 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN:MOV AX,DATAMOV DS,AXMOV BL,1GOON:MOV AL,BLMUL ALCALL OUTPUTINC BLCMP BL,10JBE GOONOUTPUT PROCPUSH BXMOV BX,10LEA SI,ASC+5MOV CX,0NEXT:MOV DX,0DIV BXADD DL,48DEC SIMOV SI,DLINC CXCMP AX,0JNE NEXTSHOW:MOV DL,SIMOV AH,2INT 21HINC SILOOP SHOWMOV DL,空格MOV AH,2INT 21HPOP BXRETOUTPUT ENDPCODE ENDSEND MAIN十三、编写程序,从键盘输入一个不超过4位的十进制数,把该数的值保存到字变量VALUE中。要求程序能对非法输入(指按下了非数字键)进行检测,并在屏幕上显示该十进制数,当用户按回车键时输入结束。Data segmentValue dw ?Data endsCode segmentAssume cs:code,ds:dataBegin:mov ax,data Mov ds,ax Mov bx,0 Mov cx,4Next: Mov ah,7 Int 21h Cmp al,odh Je stop Cmp al,0 Jb next Cmp al,9 Ja next Mov dl,al Int 21h Sub dl,30h Call mul10 Mov dh,0 Add bx,dx Loop nextStop :mov value,bx Mov ah,4ch Int 21hMul10 proc Push dx Sal bx,1 Mov dx,bx Sal bx,1 Sal bx,1 Add bx,dx Pop dx Ret Mul10 endp Code endsEnd begin十四、编写程序,定义一个带符号的字节数组,数组的长度(元素个数)至少为10。要求在主程序中使用INT 60H调用中断服务程序INTMAX从数组中寻找最大元素,其中主程序分别通过寄存器BX和CX向中断服务程序传送数组的起始地址和长度,而中断服务程序则通过寄存器AX向主程序返回数组的最大元素。DATA SEGMENTARRAY DB -5,6,13,-9,-2,8,-7,-15,20,4COUNT EQU $-ARRAYMAX DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN:MOV DX,SEG INTMAX MOV DS,DX MOV DX,OFFSET INTMAX MOV AL,60H MOV AH,25H INT 21H MOV AX,DATA MOV DS,AX LEA BX,ARRAY MOV CX,COUNT INT 60H MOV MAX,AL MOV AH,4CH INT 21HINTMAX PROC MOV AL,BX CMP AL,BX JGE SKIP MOV AL,BXSKIP:INC BX LOOP GOON IRETINTMAX ENDPCODE SEGMENTEND MAIN十五、某微型机的中断系统由3片8259A组成,以级联方式进行连接。其中作为主片的8259A的端口地址为80H和81H,工作方式为特殊完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为080FH。第一个从片8259A的端口地址为82H和83H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为4047H,中断请求输出端INT与主片的IR2连接在一起;第二个从片8259A的端口地址为84H和85H,工作方式为完全嵌套、电平触发、缓冲及中断非自动结束,中断类型号为484FH,中断请求输出端INT与主片的IR4连接在一起。请编写程序分别对上述三个8259A芯片进行初始化。Mov dx,80hMov al,00011001bOut dx,alMov dx,81hMov al,08hOut dx,almov al,00010100bOut dx,alMov al,00011101bOut dx,al;主片的初始化Mov dx,82hMov al,00011001bOut dx,alMov dx,83hMov al,40hOut dx,alMov al,00000010bOut dx,alMov al,00001001bOut dx,alMov dx,84hMov al,00011001bOut dx,alMov dx,85hMov al,48hOut dx,alMov al,00000100bOut dx,alMov al,00001001bOut dx,al十六、8255A采用无条件传送方式从A口输入开关状态,并将该状态对应的编码从B口输出到LED显示器。已知8255A三个端口以及控制寄存器的地址为320323H,写出实现上述功能的汇编语言程序,请参考教材第289页的例7.3。 Data segmentList db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h Db 39h,5eh,79h,71h,7fh,6fh,77h,7chData endsCode segmentAssume cs:code,ds:dataBegin:mov ax,data mov ds,ax Mov al,10010000b Mov dx,0ffe3h Out dx,alLo: Mov dx,0ffe0h In al,dx And al,0fh Mov bx,offset list And ax,ooffh Add bx,ax Mov al,bx Mov dx,0ffe1h Out dx,al Call delay Jmp L0Delay proc Push cx Push ax Mov cx,0010h T1: Mov ax,0010h T2: Dec ax JnzT2 Loop T1 Pop ax Pop cx Ret Code endsEnd begin十七、8255A以查询方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,打印机的BUSY信号连接到PC4,三个端口以及控制寄存器的地址分别为6063H。写出打印机驱动程序,将内存缓冲区BUFFER中的2000个字节的数据发送到打印机输出,请参考教材第291页的例7.4。Data segmentBuffer db 2000h dup(?)Data endsCode segmentAssume cs:code,ds:dataBegin: mov ax,data Mov ds,ax Mov dx,63h Mov al,10101000b Out dx,al Mov cx,2000 Mov si,offset buffer L1: Mov dx,62h In al,dx Test al,00010000b Jnz L1 Mov al,si Mov dx,60h Out dx,al Inc siLoop L1Mov ah,4chInt 21hCode endsEnd begin十八、8255A以中断方式向打印机输出数据。假设8255A的端口A工作在方式1,数据输出,其中断请求信号通过PC3连接到8259A的IR2,端口B和端口C不用,三个端口以及控制寄存器的地址为6063H;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲且中断非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8255A和中断向量表初始化,在中断服务程序中向打印机输出字符,请参考老师在上课时讲解的例题。Data segmentBuffer db 2000 dup(?)Count dw 2000Data endsCode segmentAssume cs:code,ds:dataMain: CLI Mov dx,20h Mov al,00011011b Out dx,al Mov dx,21h Mov al,08h Out dx,al Mov al,00000001b Out dx,al In al,dx And al,11111011b Out dx,al Mov dx,63h Mov al,10100000b Out dx,al Mov al,00000111b Out dx,al Mov dx,seg print Mov ds,dx Mov dx,offset print Mov al,0ah Mov ah,25h Int 21h Mov ax,data Mov ds,ax Lea bx,buffer STIWait0:cmp count,0 Jne wait0 Mov ah,4ch Int 21hPrint proc Mov al,bx Mov dx,60h Out dx,al Inc bx Dec count Mov dx,63hMov al,00100000b Out dx,al STI IRET Print endp Code ends End begin十九、假设8254的四个端口地址分别为3F83FBH。现在要求计数器0#工作在方式0,计数初值为10000,按二进制计数;计数器1#工作在方式1,计数初值为200,按BCD码计数;计数器2#工作在方式3,计数初值为160,按二进制计数。请分别写出对该8254三个计数器初始化的程序段以及读取计数器0当前值的程序段,要求把读出结果保存到寄存器AX中。Mov dx,3fbhMov al,00110000bOut dx,alMov dx,3f8hMov ax,10000Out dx,alMov al,ahOut dx,alMov dx,3fbhMov al,01010011bOut dx,alMov dx,3f9hMov al,200Out dx,alMov dx,3fbhMov al,10010110bOut dx,alMov dx,3fahMov al,160Out dx,alMov dx,3fbhMov al,11000010bOut dx,alMov dx,3f8hIn al,dxMov ah,alIn al,dxXchg ah,al二十、利用8254的计数器0#每秒钟产生一次中断请求,共中断10次,每次中断在屏幕上输出一串字符。假设8254的计数器0#工作在方式3,其时钟信号CLK0的频率为2.5KHz,其输出信号OUT0被接入8259A的IR2引脚,端口地址为3F83FBH;8259A的工作方式为电平触发、单片、完全嵌套、非缓冲、非自动结束,中断类型号为080FH,端口地址为2021H。要求写出主程序和中断服务程序,在主程序中分别对8259A、8254和中断向量表初始化,在中断服务程序中输出字符串,请参考老师在上课时讲解的例题。Data segmentString db “The program is interrupted”,0dh,0ah,”$” Count db 10 Data ends Code segment Assume cs:code,ds:data Main : CLI Mov dx,20h Mov al,00011011b Out dx,al Mov dx,21h Mov al,08h Out dx,al Mov al,00000001b Ouit dx,al In al,dx And al,11111011b Out dx,al Mov dx,3fbh Mov al,00110110b Out dx,al Mov dx,3f8h Mov ax,2500 Out dx,al Mov al,ah Out dx,al Mov dx,3fbh Mov al,01110110b Out dx,al Mov dx,3f9h Mov ax,1000 Out dx,al Mov al,ah Out dx,al Mov dx,seg INTP Mov ds,dx Mov dx,offset INTP Mov al,0ah Mov ah,25h Int 21h Mov ax,data Mov ds,ax STIWait0: Cmp count,0 Jne wait0 Mov ah,4ch Int 21h INTP p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急性胰腺炎的诊断及护理
- 运管安全教育培训照片课件
- 围墙广告策划工作总结
- 服装工艺制作教学课件
- 小学英语教学上册课件
- 山楂树舞蹈教学课件
- 运动装备概述课件
- 运动改造大脑课件
- 运动处方课件
- 停产检修工作总结
- 工程施工队课件
- 2025-2026学年人教版(2024)初中生物八年级上册(全册)教学设计(附目录)
- 桥梁施工技术创新路径与工程应用研究综述
- Unit 2 Home Sweet Home Section A Grammar Focus 3a-3c课件 人教版(2024)八年级上册
- 法律援助法普法活动方案
- 食管恶性肿瘤护理查房
- 发热病人的护理课件
- 2025年江苏高考地理真题(原卷版)
- 学堂在线 生活英语听说 章节测试答案
- 智能装备产业行动计划
- 新生儿湿疹护理与防治要点
评论
0/150
提交评论