Advertisement
dnhirapara2104

MFP Assignment 7

Sep 1st, 2020 (edited)
246
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. 1.
  2. data segment
  3. msg db "Enter Number: $"
  4. for_same db "Armstrong Number.$"
  5. for_notsame db "Not Armstrong Number.$"
  6. sum dd ?
  7. num dw 0000h
  8. n db 20,?,20 dup('$')
  9. size_n db ?
  10. data ends
  11. code segment
  12. assume ds:data,cs:code
  13. mov ax,data
  14. mov ds,ax
  15.  
  16. mov dx,offset msg
  17. mov ah,09h
  18. int 21h
  19.  
  20. mov dx,offset n
  21. mov ah,0ah
  22. int 21h
  23.  
  24. lea si,n[2]
  25. mov cl,n[1]
  26. mov [size_n],cl
  27.  
  28. loop1:
  29. mov bl,[si]
  30. sub bx,30h
  31. inc si
  32. mov ax,bx
  33. mul bx
  34. mul bx
  35. add word ptr[sum],ax
  36. adc word ptr[sum+2],dx
  37. loop loop1
  38.  
  39. mov cl,[size_n]
  40. lea si,n[2]
  41. mov ax,000ah
  42. loop2:
  43. mov bl,[si]
  44. sub bx,30h
  45. inc si
  46. mov ax,000ah
  47. mul [num]
  48. mov [num],ax
  49. add [num],bx
  50. loop loop2
  51.  
  52. mov ax,[num]
  53. cmp ax,word ptr[sum]
  54. jnz notsame
  55. mov dx,offset for_same
  56. mov ah,09h
  57. int 21h
  58. jmp exit
  59. notsame:
  60. mov dx,offset for_notsame
  61. mov ah,09h
  62. int 21h
  63. jmp exit
  64.  
  65. exit:
  66. int 03
  67.  
  68. code ends
  69. end
  70.  
  71. 2.
  72. data segment
  73. str1 db 20,20 dup(0)
  74. str2 db 20,20 dup(0)
  75.  
  76. entermsg1 db "Enter String 1 : $"
  77. entermsg2 db "Enter String 2 : $"
  78.  
  79. msg1 db "Same$"
  80. msg2 db "Not Same$"
  81. data ends
  82. code segment
  83. assume cs:code,ds:data
  84. mov ax,data
  85. mov ds,ax
  86.  
  87. mov ah,09
  88. mov dx,offset entermsg1
  89. int 21h
  90.  
  91. mov ah,0ah
  92. mov dx,offset str1
  93. int 21h
  94. mov ah,2
  95. mov dl,10
  96. int 21h
  97.  
  98. mov ah,09
  99. mov dx,offset entermsg2
  100. int 21h
  101. mov ah,0ah
  102. mov dx,offset str2
  103. int 21h
  104. mov ah,2
  105. mov dl,10
  106. int 21h
  107.  
  108. lea si,str1
  109. lea di,str2
  110.  
  111. mov al,[si+1]
  112. mov bl,[si+1]
  113.  
  114. cmp al,bl
  115. jnz notsame
  116.  
  117. lea si,str1+2
  118. lea di,str2+2
  119. mov cl,al
  120. inc cl
  121.  
  122. loop1:
  123. dec cl
  124. jz same
  125. mov al,[si]
  126. mov bl,[di]
  127. cmp al,97
  128. jge small1
  129. add al,32
  130. cmp bl,97
  131. jge skip1
  132. add bl,32
  133.  
  134. skip1:
  135. cmp al,bl
  136. jnz notsame
  137. inc si
  138. inc di
  139. jmp loop1
  140.  
  141. small1:
  142. cmp bl,97
  143. jge skip2
  144. add bl,32
  145.  
  146. skip2:
  147. cmp al,bl
  148. jnz notsame
  149. inc si
  150. inc di
  151. jmp loop1
  152.  
  153. notsame:
  154. mov ah,09
  155. mov dx,offset msg2
  156. int 21h
  157.  
  158. mov ah,2
  159. mov dl,10
  160. int 21h
  161.  
  162. int 03
  163.  
  164. same:
  165. mov ah,09
  166. mov dx,offset msg1
  167. int 21h
  168.  
  169. mov ah,2
  170. mov dl,10
  171. int 21h
  172.  
  173. int 03
  174.  
  175. code ends
  176. end
  177.  
  178. 3.
  179. data segment
  180. strbfr1 db 20,20 dup(?)
  181. msg1 db "palindrome$"
  182. msg2 db "not palindrome$"
  183. data ends
  184. extra segment
  185. strbfr2 db 20,20 dup(?)
  186. extra ends
  187.  
  188. code segment
  189. assume cs:code,ds:data,es:extra
  190.  
  191. mov ax,data
  192. mov ds,ax
  193. mov ax,extra
  194. mov es,ax
  195.  
  196. mov ah,0ah
  197. mov dx,offset strbfr1
  198. int 21h
  199. mov ah,2
  200. mov dl,10
  201. int 21h
  202.  
  203. lea si,strbfr1
  204. mov cl,[si+1]
  205. lea di,strbfr2
  206. mov ch,00
  207. mov bx,cx
  208. add di,cx
  209.  
  210. dec di
  211.  
  212. lea si,strbfr1+2
  213. back:
  214. cld
  215. lodsb
  216. std
  217. stosb
  218. loop back
  219.  
  220. lea si,strbfr1+2
  221. lea di,strbfr2
  222. mov cx,bx
  223.  
  224. cld
  225. repz cmpsb
  226.  
  227. jnz notpalin
  228. mov ah,09
  229. mov dx,offset msg1
  230. int 21h
  231. mov ah,2
  232. mov dl,10
  233. int 21h
  234. int 03
  235.  
  236. notpalin:
  237. mov ah,09
  238. mov dx,offset msg2
  239. int 21h
  240. mov ah,2
  241. mov dl,10
  242. int 21h
  243. int 03
  244.  
  245. code ends
  246. end
  247.  
  248. 4.
  249. data segment
  250. list db 02h,03h,05h,06h,15h,19h
  251. list_len dw $-list
  252. ;num db 15h
  253. num db 20h
  254. result dw -0001h
  255. l dw 0000h
  256. r dw ?
  257. mid dw ?
  258. divi db 02h
  259. data ends
  260. code segment
  261. assume ds:data,cs:code
  262. mov ax,data
  263. mov ds,ax
  264. mov bx,[list_len]
  265. dec bx
  266. mov [r],bx
  267. lea si,list
  268. loop1:
  269. mov ax,[r]
  270. mov dx,[l]
  271. sub ax,dx
  272. div [divi]
  273. mov ah,00h
  274. add ax,[l]
  275. mov [mid],ax
  276. mov bx,[mid]
  277. mov al,byte ptr [si+bx]
  278. cmp al,byte ptr[num] ;num
  279. jz equal
  280. jc less
  281. jnc more
  282. less:
  283. mov cx,[mid]
  284. inc [mid]
  285. mov bx,[mid]
  286. mov [l],bx
  287. mov bx,[l]
  288. mov bx,[mid]
  289. cmp bx,[r]
  290. jz loop1
  291. jnc exit
  292. jc loop1
  293. more:
  294. dec [mid]
  295. mov bx,[mid]
  296. mov [r],bx
  297. mov bx,[r]
  298. cmp [l],bx
  299. jz loop1
  300. jnc exit
  301. jc loop1
  302. equal:
  303. mov bx,[mid]
  304. mov [result],bx
  305. jmp exit
  306. exit:
  307. int 03
  308. code ends
  309. end
  310.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement